Projemin bir POM üst dosyasında, bu proje için yararlı olan bazı yapılandırmaları tanımlayan böyle bir profilim var (böylece bu ana POM'dan kurtulamam):
<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>
Ancak projemde, test sınıflarını derlemek için jdk4 yerine jdk5 kullanmak için maven-derleyici eklentisinin yapılandırmasını geçersiz kılmak istiyorum.
Bu yüzden projemin POM'unda şu bölümü yaptım:
<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>
ve çalışmıyor ...
Hatta POM'umun normal eklenti bölümlerindeki yapılandırmayı geçersiz kılmaya bile çalıştım (yani, belirli bir profil için değil, tüm POM'um için).
Sorun ne olabilir?
Gereksinimlerimden bazılarını açıklığa kavuşturmak için:
- Ana POM'dan ve içinde tanımlanan profilden (wls7) kurtulmak istemiyorum (çünkü birçok özelliğe, konfigürasyona, ... ihtiyacım olduğu için) ve bu benim şirketimdeki süreç değil.
- Ana POM ve / veya içinde tanımlanan profilin kopyalanmasına dayalı bir çözüm iyi bir çözüm değildir. Çünkü
ebeveyn POM sorumlusu bir şeyi değiştirirse,
bunu benimkinde rapor etmem gerekir.
Bu sadece bir miras meselesi (bir profili genişletme veya geçersiz kılma, üst düzey bir POM'dan bir konfigürasyon) bu yüzden Maven 2 ile mümkün olması gerektiğini düşünüyorum.