1

私の要件は次のとおりです: - 4 つの環境 (dev、uat、prod、stag) があります - 現在、log4j_dev.properties、log4j_uat.properties、 log4j_prod.properties、log4j_stag.properties
- 上記のすべてのファイルにはほとんどの共通点があり、各ファイルで 4 ~ 5 個のプロパティが異なるだけです。

私の現在の要件は、すべてのプロパティを共通ファイル (log4j.properties など) に配置する必要があり、環境固有のファイルには特定の 4 ~ 5 プロパティのみが含まれるということです。ビルド時にこれらのファイルをマージし、これらすべてのプロパティを含む新しいファイルを作成する必要があります。

mavne 2 で正常に動作するmaven-config-processor-pluginを試しましたが、 maven3 とは互換性がありません。現在、maven3 を使用しているため、別のアプローチが必要です。Maven config-processor に代わるものはありますか、それを行うための新しい Maven プラグインを作成する必要があります。

任意の提案をお願いします。

4

1 に答える 1

0

リソースでmaven-resources-pluginとフィルタリングオプションを使用しようとしましたか

例を次に示します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
    <execution>
        <id>copy-resources</id>
        <phase>validate</phase>
        <goals>
            <goal>copy-resources</goal>
        </goals>
        <configuration>
            <filters>
                <filter>src/main/filters/${target.filter}.properties</filter>
            </filters>
            <resources>          
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/test/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>              
        </configuration>            
        </execution>
    </executions>
</plugin>

次に、ディレクトリ src/main/filters があります。環境ごとに、filter_env.properties を追加します。その中に、このように可変化するキーを入れます

ys.client.service.port=8511
ys.client.service.url=http://localhost/yoda-client/service/yoda
ys.env=dev

最後に、プロパティ ファイルで、実際の値の代わりに変数を追加します。プラグインは、値をフィルターのものに置き換えます。

ys.client.service.port=${ys.client.service.port}
ys.client.service.url=${ys.client.service.url}
ys.environment=${ys.env}
于 2012-09-11T06:53:55.900 に答える