値を変更する必要がある設定ファイルがたくさんあります。誰かが「package」コマンドを実行した場合、いくつかの値を要求してプロジェクト ファイルに挿入できますか?
4 に答える
より良いアプローチには、環境に応じて異なるプロパティ/構成ファイルがあります。
- 製品
- 開発
2 つの値のセットを 2 つの異なるファイルに保持します。場合によってはファイル名を指定してください。
ビルド タスクの 90% には Maven があります。その他すべてについては、maven-antrun-pluginがあります。
ユーザー入力を求め、 Ant 入力タスクpom.xml
を使用して構成ファイルを書き出すカスタム ant スクリプト (に埋め込むことができます) を作成することをお勧めします。
Maven を使用-P
して Maven プロファイルを選択し、次にそのプロパティ ファイルを選択できます。
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<resource.prefix>dev</resource.prefix>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<resource.prefix>prod</resource.prefix>
</properties>
</profile>
</profiles>
としてリソースファイルにアクセスします${resource.prefix}_config.properties
。そのため、プロファイルが prod の場合、リソース ファイルprod_config.properties
が取得されます。
noahzによって提案されたいくつかのアリのことをしない限り、実際に maven に入力を求めるプロンプトを出すことはできません。
プロファイルをいじりたくない場合にできることは、pom ファイルでプロパティを使用することです。
例:
<project>
<groupId>abc</groupId>
<artifactId>def</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<myProperty>someValue</myProperty>
</properties>
<build>
<plugins>
<plugin>
...
<configuration>
<outputDir>${myProperty}</outputDir>
</configuration>
</plugin>
</plugins>
</build>
</project>
pom ファイル内の任意の場所でプロパティを使用でき、リソースをフィルタリングするときにもプロパティを使用できます。
プロパティはデフォルトで空で、コマンド ラインから新しい値を設定できます。
mvn package -DmyProperty=anotherValue
そして、anotherValue
それが pom で使用されている場所ならどこにでも伝搬されます。
Maven リソース フィルタリングについては、こちらを参照してください。
ファイルを配置するsrc/main/resources
と、上記のプロパティでフィルタリングできます。
src/main/resources/important-stuff.properties
some.nice.property = Nice!
some.variable.property = ${myProperty}
そして、これをpomに追加する必要があります:
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
フィルター処理されたものは、jarimportant-stuff.properties
内target/classes
および jar 内になり、次のようになります。
some.nice.property = Nice!
some.variable.property = anotherValue
リソースのフィルタリングは非常に便利です。