Dalam file induk POM dari proyek saya, saya memiliki profil yang mendefinisikan beberapa konfigurasi yang berguna untuk proyek ini (sehingga saya tidak dapat menyingkirkan POM induk ini):
<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>
Tetapi dalam proyek saya, saya hanya ingin mengganti konfigurasi maven-compiler-plugin untuk menggunakan jdk5 dan bukan jdk4 untuk mengompilasi kelas uji.
Itulah mengapa saya melakukan bagian ini di POM proyek saya:
<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>
dan itu tidak bekerja ...
Saya bahkan mencoba menimpa konfigurasi di bagian plugin reguler POM saya (maksud saya, bukan untuk profil tertentu tetapi untuk keseluruhan POM saya).
Apa masalahnya?
Untuk memperjelas beberapa persyaratan saya:
- Saya tidak ingin menyingkirkan POM induk dan profil (wls7) yang ditentukan di dalamnya (karena saya memerlukan banyak dan banyak properti, konfigurasi, ...) dan itu bukan proses di perusahaan saya.
- Solusi yang didasarkan pada penggandaan POM induk dan / atau profil yang ditentukan di dalamnya bukanlah solusi yang baik. Karena jika penanggung jawab
Badan POM induk mengubah sesuatu, saya
harus melaporkannya di milik saya.
Ini hanya masalah warisan (memperpanjang atau menimpa profil, konfigurasi dari POM tingkat atas) jadi saya pikir itu harus dimungkinkan dengan Maven 2.
sumber
Jawaban:
Konfigurasi utama dari pom induk dapat dilakukan dengan menambahkan
combine.self="override"
atribut ke elemen di pom Anda.Coba ubah konfigurasi plugin Anda menjadi:
Untuk informasi lebih lanjut tentang mengganti plugin, lihat: http://maven.apache.org/pom.html
sumber
saya memiliki masalah yang sama. Secara default plugin maven war saya tidak menyertakan file html. Tetapi dalam profil tes penerimaan saya, saya ingin file ini disertakan. Jadi ketika saya menambahkan plugin maven war lagi itu tidak menimpa default.
Untuk mengatasi masalah ini saya melewati atribut gabungkan.self dan bekerja dengan baik.
Bangun default:
Profil uji penerimaan:
sumber
Apakah Anda mencoba untuk menonaktifkan profil wls7 (sejak maven 2.0.10):
Dan kemudian tambahkan konfigurasi Anda di profil dengan nama yang berbeda atau langsung di file
pom.xml
.sumber