In einer übergeordneten POM-Datei meines Projekts habe ich ein solches Profil, das einige für dieses Projekt nützliche Konfigurationen definiert (damit ich dieses übergeordnete POM nicht entfernen kann):
<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>
Aber in meinem Projekt möchte ich nur die Konfiguration des Maven-Compiler-Plugins überschreiben, um jdk5 anstelle von jdk4 zum Kompilieren von Testklassen zu verwenden.
Deshalb habe ich diesen Abschnitt im POM meines Projekts erstellt:
<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>
und es funktioniert nicht ...
Ich habe sogar versucht, die Konfiguration in regulären Plugin-Abschnitten meines POM zu überschreiben (ich meine, nicht für ein bestimmtes Profil, sondern für mein gesamtes POM).
Was könnte das Problem sein?
Um einige meiner Anforderungen zu klären:
- Ich möchte das übergeordnete POM und das darin definierte Profil (wls7) nicht loswerden (da ich viele, viele Eigenschaften, Konfigurationen usw. benötige), und das ist in meinem Unternehmen nicht der Prozess.
- Eine Lösung, die auf dem Duplizieren des übergeordneten POM und / oder des darin definierten Profils basiert, ist nicht gut. Da, wenn der Verantwortliche des
übergeordneten POM etwas ändert,
müsste ich es in meinem melden.
Es ist nur eine Vererbungssache (ein Profil erweitern oder überschreiben, eine Konfiguration aus einem POM der oberen Ebene), daher denke ich, dass dies mit Maven 2 möglich sein sollte.