W macierzystym pliku POM mojego projektu mam taki profil definiujący niektóre konfiguracje przydatne dla tego projektu (aby nie móc się pozbyć tego nadrzędnego 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>
Ale w moim projekcie chciałbym po prostu przesłonić konfigurację wtyczki maven-compiler-plugin, aby używać jdk5 zamiast jdk4 do kompilowania testów-klas.
Dlatego zrobiłem ten dział w POM mojego projektu:
<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>
i nie działa ...
Próbowałem nawet nadpisać konfigurację w zwykłych sekcjach wtyczki mojego POM (mam na myśli, nie dla określonego profilu, ale dla całego mojego POM).
Jaki może być problem?
Aby wyjaśnić niektóre z moich wymagań:
- Nie chcę pozbywać się macierzystego POM i profilu (wls7) zdefiniowanego w nim (ponieważ potrzebuję wielu i wielu właściwości, konfiguracji, ...) i nie jest to proces w mojej firmie.
- Rozwiązanie polegające na powielaniu macierzystego POM i / lub zdefiniowanego w nim profilu nie jest dobre. Skoro gdyby odpowiedzialna
za rodzica POM coś zmieniła to
musiałbym to zgłosić u siebie.
To tylko kwestia dziedziczenia (rozszerzenie lub zastąpienie profilu, konfiguracja z POM wyższego poziomu), więc myślę, że powinno to być możliwe z Maven 2.
maven-2
plugins
configuration
profile
Guillaume Cernier
źródło
źródło
Odpowiedzi:
Nadpisywanie konfiguracji z macierzystego pom może być wykonane przez dodanie
combine.self="override"
atrybutu do elementu w pom.Spróbuj zmienić konfigurację wtyczki na:
Więcej informacji na temat zastępowania wtyczek można znaleźć pod adresem : http://maven.apache.org/pom.html
źródło
miałem ten sam problem. Domyślnie moja wtyczka maven war wykluczyła plik HTML. Ale w moim profilu testów akceptacyjnych chciałem dołączyć ten plik. Więc kiedy ponownie dodałem wtyczkę maven war, nie nadpisała domyślnej.
Aby rozwiązać ten problem, przekazałem atrybut connect.self i działałem dobrze.
Kompilacja domyślna:
Profil testu akceptacji:
źródło
Czy próbowałeś dezaktywować profil wls7 (od maven 2.0.10):
Następnie dodaj swoją konfigurację w profilu o innej nazwie lub bezpośrednio w swoim
pom.xml
.źródło