如何为同一项目中的用户执行不同的项目设置。我有一个项目,其中包含一些.properties文件,如email.properties,其中包含用户特定的设置。我需要类似于用户的环境设置,例如:email..properties,变量包含在OS环境中,或者可能在项目文件
答案 0 :(得分:0)
以下是我在某些项目中的表现。我在属性文件的路径上创建了一个System Property。该路径位于项目之外,因此永远不会提交属性文件。但是为了帮助第一次运行项目的其他人,我提交了一个带有默认选项的模板属性文件。
在intellij中,我使用与我的同事不同的-D选项启动项目,并且启动选项未提交(因为我们不提交.idea文件夹)。
答案 1 :(得分:0)
结果是这样做:首先我在propject根目录中创建了属性文件夹,添加包含当前环境名称的文件env.properties(或者用户可以将其添加为JVM start paramenter -Denv=<env name>
。我添加静态类和方法Properties getProperty(String fileName)
,它接收属性文件名作为参数,并将文件中的所有记录作为java.util.Properties返回。
public static Properties loadProperties(String fileName)
{
Properties properties = null;
if (propertiesMap.containsKey(fileName)) {
properties = (Properties)properties.get(fileName);
} else {
String environment = getEnvironment();
try {
properties = (new PropertiesLoaderImpl()).LoadAllPropertiesForUtilAndEnv(environment, fileName);
} catch (FileNotFoundException exception) {}
}
return properties;
}
private static String getEnvironment() {
// Проверка на наличие параметра при запуске java-машины
String environment = System.getProperty("env");
if (environment == null) {
try {
// Попытка найти файл env.properties
ResourceBundle bundle = ResourceBundle.getBundle("properties/env");
environment = bundle.getString("env");
} catch (MissingResourceException exception) {
environment = "";
}
}
return environment;
}
属性搜索以这种方式实现: 1.看看..proeprties; 2.如果没有合适的财产,那么请查看.property; 3.否则返回empy。