私のプロジェクトのPOM親ファイルには、このプロジェクトに役立ついくつかの構成を定義するようなプロファイルがあります(この親POMを取り除くことができないように):
<profile>
<id>wls7</id>
...
<build>
<plugins>
<!-- use java 1.4 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<source>1.4</source>
<target>1.4</target>
<meminitial>128m</meminitial>
<maxmem>1024m</maxmem>
<executable>%${jdk14.executable}</executable>
</configuration>
</plugin>
</plugins>
</build>
...
</profile>
しかし、私のプロジェクトでは、テストクラスのコンパイルに jdk4 の代わりに jdk5 を使用するために、maven-compiler-plugin の構成をオーバーライドしたいと考えています。
そのため、プロジェクトの POM でこのセクションを実行しました。
<profiles>
<profile>
<id>wls7</id>
<activation>
<property>
<name>jdk</name>
<value>4</value>
</property>
</activation>
<build>
<directory>target-1.4</directory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>my-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<fork>true</fork>
<executable>${jdk15.executable}</executable>
<compilerVersion>1.5</compilerVersion>
<source>1.5</source>
<target>1.5</target>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>
そしてそれは機能していません...
POM の通常のプラグイン セクションの構成をオーバーライドしようとさえしました (つまり、特定のプロファイルではなく、POM 全体に対して)。
何が問題なのですか?
私の要件のいくつかを明確にするために:
- 親POMとその内部で定義されたプロファイル(wls7)を削除したくありません(非常に多くのプロパティ、構成などが必要なため)。それは私の会社のプロセスではありません。
- 親POMおよび/またはその内部で定義されたプロファイルを複製することに基づくソリューションは、適切なものではありません。
親POMの責任者が何かを変更した場合、私
はそれを報告する必要があるためです。
これは単なる継承の問題 (プロファイルの拡張またはオーバーライド、上位レベルの POM からの構成) であるため、Maven 2 で可能になるはずです。