私のプロジェクトの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からの構成)であるため、Maven 2で可能になると思います。
親pomの設定をオーバーライドするには、pomの要素にcombine.self="override"
属性を追加します。
プラグイン構成を次のように変更してみてください。
<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 combine.self="override">
<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>
プラグインのオーバーライドの詳細については、以下を参照してください: http://maven.Apache.org/pom.html
私は同じ問題を抱えていました。デフォルトでは、私のmaven warプラグインはhtmlファイルを除外しました。しかし、受け入れテストのプロファイルでは、このファイルを含めることを望んでいました。そのため、Maven Warプラグインに再び追加したとき、デフォルトは上書きされませんでした。
この問題を解決するには、combine.self属性を渡し、正常に動作しました。
デフォルトのビルド:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<packagingExcludes>swagger-ui/client.html</packagingExcludes>
</configuration>
</plugin>
受け入れテストプロファイル:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration combine.self="override"/>
</plugin>
Wls7プロファイルを非アクティブ化しようとしましたか(maven 2.0.10以降):
Maven 2.0.10以降では、コマンドラインを使用して、識別子の前に文字「!」または以下に示すように「-」:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
これは、activeByDefaultとしてマークされたプロファイル、またはアクティブ化構成を介してアクティブ化されるプロファイルを非アクティブ化するために使用できます。
次に、設定を別の名前でプロファイルに追加するか、pom.xml
。