1

値を変更する必要がある設定ファイルがたくさんあります。誰かが「package」コマンドを実行した場合、いくつかの値を要求してプロジェクト ファイルに挿入できますか?

4

4 に答える 4

3

より良いアプローチには、環境に応じて異なるプロパティ/構成ファイルがあります。

  1. 製品
  2. 開発

2 つの値のセットを 2 つの異なるファイルに保持します。場合によってはファイル名を指定してください。

于 2012-09-13T19:13:24.867 に答える
1

ビルド タスクの 90% には Maven があります。その他すべてについては、maven-antrun-pluginがあります。

ユーザー入力を求め、 Ant 入力タスクpom.xmlを使用して構成ファイルを書き出すカスタム ant スクリプト (に埋め込むことができます) を作成することをお勧めします。

于 2012-09-13T19:13:11.560 に答える
0

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が取得されます。

于 2012-09-13T19:24:22.273 に答える
0

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.propertiestarget/classesおよび jar 内になり、次のようになります。

some.nice.property = Nice!
some.variable.property = anotherValue

リソースのフィルタリングは非常に便利です。

于 2012-09-14T07:23:27.123 に答える