मेरे प्रोजेक्ट की POM पैरेंट फ़ाइल में, मेरे पास ऐसी प्रोफ़ाइल है जो इस प्रोजेक्ट के लिए उपयोगी कुछ कॉन्फ़िगरेशन परिभाषित कर रही है (ताकि मुझे इस पैरेंट 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>
लेकिन मेरी परियोजना में मैं परीक्षण कक्षाओं को संकलित करने के लिए jdk4 के बजाय jdk5 का उपयोग करने के लिए maven-compiler-plugin के कॉन्फ़िगरेशन को ओवरराइड करना चाहूंगा।
इसलिए मैंने अपनी परियोजना के POM में इस अनुभाग को किया:
<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>
और यह काम नहीं कर रहा है ...
मैंने अपने POM के नियमित प्लगइन अनुभागों में कॉन्फ़िगरेशन को ओवरराइड करने की भी कोशिश की (मेरा मतलब है, एक विशिष्ट प्रोफ़ाइल के लिए नहीं बल्कि मेरे पूरे पीओएम के लिए)।
क्या समस्या हो सकती है ?
मेरी कुछ आवश्यकताओं को स्पष्ट करने के लिए:
- मैं मूल POM और प्रोफ़ाइल (wls7) को इसके अंदर परिभाषित नहीं करना चाहता (क्योंकि मुझे कई और कई गुणों, कॉन्फ़िगरेशन, ... की आवश्यकता है) और यह मेरी कंपनी में प्रक्रिया नहीं है।
- माता-पिता POM और / या इसके अंदर परिभाषित प्रोफ़ाइल को डुप्लिकेट करने के आधार पर एक समाधान एक अच्छा नहीं है। चूंकि अगर
माता-पिता POM के जिम्मेदार कुछ बदलते हैं, तो मुझे
इसकी रिपोर्ट करनी होगी।
यह सिर्फ एक विरासत का मामला है (एक प्रोफ़ाइल का विस्तार करें या ओवरराइड करें, एक ऊपरी-स्तरीय पोम से एक कॉन्फ़िगरेशन) इसलिए मुझे लगता है कि यह मावेन 2 के साथ संभव होना चाहिए।