同じプロジェクト内のユーザーに対して異なるプロジェクト設定を行うにはどうすればよいですか? 私は、ユーザー固有の設定を含む email.properties のようないくつかの .properties ファイルを含むプロジェクトを持っています。ユーザー固有の環境設定のようなものが必要です: email..properties、および変数が OS 環境に含まれているか、おそらくプロジェクトファイル
2 に答える
結果として同じことを行います。最初にpropjectrootにプロパティフォルダーを作成し、そこに現在の環境名を含むファイルenv.propertiesを追加します(またはユーザーはそれをJVM開始パラメーターとして追加できます。プロパティファイルを受け取る-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を返します。
いくつかのプロジェクトでこれを行った方法を次に示します。プロパティ ファイルのパスにシステム プロパティを作成します。パスはプロジェクトの外にあるため、プロパティ ファイルは決してコミットされません。しかし、初めてプロジェクトを実行する他の人を助けるために、デフォルトのオプションでテンプレート プロパティ ファイルをコミットします。
intellij では、同僚とは異なる -D オプションを使用してプロジェクトを開始しましたが、スタートアップ オプションはコミットされません (.idea フォルダーをコミットしないため)。