web-dev-qa-db-ja.com

Mavenは一度に複数のプロファイルを構築します

デプロイ可能なjarを1つだけビルドすることがポリシーです。環境固有の構成はすべて個別に保持され、一度にすべて一緒に構築されます。そのため、現在のAntプロセスでは、各環境のプロパティファイルがあり、それらをループして、各環境の構成ファイルのセットを作成します。

現在のPOMXMLでは、コマンドラインで提供されるプロファイルを1つだけ作成できます。 Mavenを介して達成することは可能ですか?

POM.xmlの関連部分の一部を次に示します。

<!-- Define profiles here and make DEV as default profile -->
<profiles>

    <!-- dev Profile -->
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <!-- qa Profile -->
    <profile>
        <id>qa</id>
        <properties>
            <env>qa</env>
        </properties>
    </profile>

    <!-- prod Profile -->
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>

</profiles>
...


<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>

    <executions>
        <execution>

            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>

            <configuration>

                <filters>
                    <filter>env/${env}.properties</filter>
                </filters>

                <outputDirectory>${project.build.directory}/config/${env}
                </outputDirectory>
                <resources>
                    <resource>

                        <filtering>true</filtering>

                        <directory>${basedir}/src/main/config/default
                        </directory>
                        <includes>
                            <include>*.xml</include>
                            <include>*.properties</include>
                        </includes>
                    </resource>

...。

ありがとう、Prabhjot

17
Prabhjot

Mavenはアリのようではありません。 antを使えば、基本的にやりたいときにやりたいことができます。 Mavenには、明確で文書化された ビルドライフサイクル があり、1つのコンポーネントをビルドする(そしておそらく他のアーティファクトをビルドにアタッチする)ことを目的としています。

ただし、計画しているのは、1つのコンポーネントを複数回ビルドすることですが、パラメーターは異なります。これは、Mavenのライフサイクルには適合しません。したがって、実行する必要があるのは、外部プロセスに反復を実行させ、さまざまなパラメーターを使用してmavenを繰り返し呼び出すことです。

これを実現する古典的な方法は、シェルスクリプトを使用することですが、 Maven Invoker を使用して、JavaまたはMavenコンテキストから別のプロセスを起動することもできます。

23