मान लीजिए कि मेरे पास मॉड्यूल A:jar
है, जिसका रनटाइम और निर्भरता सेट संकलन जेडीके संस्करण पर निर्भर करता है। मेरे उदाहरण में, मेरे पास pre-jdk6-profile
JAXB एपीआई के लिए है: जेडीके 1.6.0 से पहले मुझे संकलन निर्भरता के रूप में jaxb-api-nnn.jar
शामिल करने की आवश्यकता है। यह प्रोफ़ाइल A.pom
पर रखी गई है।एक निर्भर मॉड्यूल में मेवेन प्रोफाइल कैसे सक्रिय करें?
मेरे पास मॉड्यूल B:war
भी है, जो A:jar
पर निर्भर करता है। मैं JDK 1.5.x वितरित करने योग्य बनाने के लिए एक बिल्ड सर्वर पर इस प्रोफ़ाइल को सक्रिय करने में सक्षम होना चाहता हूं। जब मैं सक्रिय किसी दिए गए प्रोफाइल के साथ Maven निष्पादित, मैं संदेश मिलता है:
mvn -Ppre-jdk6-profile -o install
[WARNING]
Profile with id: 'pre-jdk6-profile' has not been activated.
और jaxb-api-nnn.jar
B.war
जिसके परिणामस्वरूप में याद आ रही है। हालांकि अगर मैं इस प्रोफ़ाइल को माता-पिता pom.xml
से बनाते समय सक्रिय करता हूं, तो सबकुछ ठीक है। इसका मतलब है कि प्रोफाइल निर्भरताओं से विरासत में नहीं हैं, और माता-पिता बहु-मॉड्यूल pom.xml सबकुछ सही ढंग से बनाने में सक्षम था क्योंकि ऐसा लगता है कि सभी प्रोफाइल रिएक्टर में विलय कर रहे हैं।
प्रोफ़ाइल को पैरेंट पोम में स्थानांतरित करना चीजों को और भी खराब बनाता है, क्योंकि निर्भरता अन्य सभी परियोजनाओं पर लागू होती है (उदाहरण के लिए C:ear
)। क्या इस कार्य के लिए कोई अच्छा समाधान है, अर्थात्, यदि कोई मॉड्यूल A
मॉड्यूल B
पर निर्भर करता है, तो प्रोफ़ाइल द्वारा सक्रिय किए गए सभी संकलित और रनटाइम निर्भरताओं को सही तरीके से संभाला जाता है?
प्रोफ़ाइल परियोजना A:jar
में इस प्रकार है:
<project ...>
<artifactId>A</artifactId>
<packaging>jar</packaging>
...
<parent>
<artifactId>P</artifactId>
...
</parent>
<profiles>
<profile>
<id>pre-jdk6-profile</id>
<activation>
<jdk>(,1.6.0)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
...
</project>
क्या मुझे मॉड्यूल 'ए' या मॉड्यूल' बी' में दूसरा भाग जोड़ने की आवश्यकता है? –
दोनों। JAR में ' के साथ ' प्रदान किया गया, डिफ़ॉल्ट क्षेत्र के साथ वेबपैप में। लेकिन प्रोफ़ाइल के अंदर दोनों में। –
मेरा मानना है कि, मैं केवल (बी) का उपयोग कर सकता हूं यदि मैं हडसन पर चलता हूं।आपके लिए धन्यवाद संकेत। –