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.
quelle
Antworten:
Das Überschreiben von Konfigurationen von einem übergeordneten Pom kann durch Hinzufügen des
combine.self="override"
Attributs zum Element in Ihrem Pom erfolgen.Versuchen Sie, Ihre Plugin-Konfiguration zu ändern:
Weitere Informationen zum Überschreiben von Plugins finden Sie unter: http://maven.apache.org/pom.html
quelle
Ich hatte das gleiche Problem. Standardmäßig hat mein Maven War Plugin eine HTML-Datei ausgeschlossen. Aber in meinem Profil für Abnahmetests wollte ich, dass diese Datei enthalten ist. Als ich das Maven War Plugin erneut hinzufügte, wurde die Standardeinstellung nicht überschrieben.
Um dieses Problem zu beheben, habe ich das Attribut kombinieren.self übergeben und gut funktioniert.
Standard-Build:
Abnahmetestprofil:
quelle
Haben Sie versucht, das wls7-Profil zu deaktivieren (seit maven 2.0.10):
Fügen Sie dann Ihre Konfiguration in einem Profil mit einem anderen Namen oder direkt in Ihrem hinzu
pom.xml
.quelle