8

私のプロジェクトにはpropertiesディレクトリがあります:

properties
    - project_dev.properties
    - project_test.properties
    - project_prod.properties
    - project_other.properties

これは、さまざまな環境に対していくつかの異なる値を定義します。templateまた、プレースホルダー付きの構成ファイル テンプレートを含むディレクトリもあります。

私がやりたいことは、ファイル内のすべてのファイルをループし、propertiesそれぞれをディレクトリに結合してtemplate、ファイル名に基づいて異なるディレクトリの下にある最終的な構成ファイルを生成することです。

したがって、次のようになります。

target
   - configurations
       - dev
            - ... some files
       - test
            - ... some files
       - prod
            - ... some files
       - other
            - ... some files

私が今やっていることは、 を使用してmaven-resources-plugin、各ファイルにいくつかの を定義しexecution、名前をハードコーディングすることです。

次のようになります。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
            <!--- for dev ---->
            <execution>
                <id>dev-filter</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <outputDirectory>${basedir}/target/conf/dev</outputDirectory>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                    <resources>
                        <resource>
                        <directory>${basedir}/conf/template</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>channel/*</include>
                            <include>rule-config/*</include>
                            <include>server/*.properties</include>
                        </includes>
                        </resource>
                    </resources>
                    <delimiters>
                        <delimiter>${*}</delimiter>
                    </delimiters>
                    <filters>
                        <filter>${basedir}/properties/project_dev.properties</filter>
                    </filters>
                </configuration>
            </execution>
            <!--- for prod ---->
            <execution>
                <id>prod-filter</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <outputDirectory>${basedir}/target/conf/prod</outputDirectory>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                    <resources>
                        <resource>
                        <directory>${basedir}/conf/template</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>channel/*</include>
                            <include>rule-config/*</include>
                            <include>server/*.properties</include>
                        </includes>
                        </resource>
                    </resources>
                    <delimiters>
                        <delimiter>${*}</delimiter>
                    </delimiters>
                    <filters>
                        <filter>${basedir}/properties/project_prod.properties</filter>
                    </filters>
                </configuration>
            </execution>
            <!--- for test --->
             ...

各ファイルのブロックをコピーしていることがわかりexecutionます。そのため、わずかな違いで多くの重複コードが存在します。

物事を簡単にする解決策はあるのだろうか?propertiesファイルをループしてそれぞれのタスクを実行する方法を見つけようとしましたが、その方法がわかりfilterません。

4

1 に答える 1