जैसा कि आपने टिप्पणी में उल्लेख किया है, यह हर निर्भरता की गणना करने के लिए मेवेन का कार्य है। जब आप प्रत्येक आम निर्भरता के साथ एक आर्टिफैक्ट बना रहे हैं, तो आपको यह भी अनुमान लगाना होगा कि कौन सी निर्भरताएं संबंधित हैं।
यह भी संभव हो सकता है कि आपको युद्ध के बिना किसी अन्य मशीन पर निर्भरता के साथ एक युद्ध तैनात करना होगा, जब आप प्रत्येक युद्ध निर्भरता प्रदान करने के लिए सेट करते हैं, तो आप फिर से अटक जाते हैं।
केवल सही तरीके से, पतला युद्ध पाने के लिए उदाहरण से है: http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html
लेकिन, और अब दिलचस्प हिस्सा आता है, वहाँ एक बड़ा है! शॉर्टकट (जो पूरी तरह से उल्लिखित दर्द को दूर करता है), मैवेन को बताने के लिए, जो आपके युद्धों पर निर्भर करता है।
अपने ईएआर-मॉड्यूल के अंदर जाएं, प्रत्येक युद्ध निर्भरता के लिए प्रकार के पोम के साथ युद्ध पर दूसरी निर्भरता घोषित करें।
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.foo</groupId>
<artifactId>skinny</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>ear</artifactId>
<packaging>ear</packaging>
<dependencies>
<dependency>
<groupId>com.foo</groupId>
<artifactId>war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.foo</groupId>
<artifactId>war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<skinnyWars>true</skinnyWars>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<webModule>
<groupId>com.foo</groupId>
<artifactId>war</artifactId>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
अब, हर युद्ध अपने आप निर्भरता के साथ स्वतंत्र रूप से पैक किया जाएगा और कान पतला युद्धों और lib फ़ोल्डर के अंदर हर निर्भरता के साथ पैक किया जाएगा
अद्यतन:
ध्यान रखें, कान/lib फ़ोल्डर का उपयोग प्रत्येक निर्भरता जार के लिए जेबॉस ईएपी 6 जैसे सख्त कंटेनर में नहीं किया जा सकता है। जेएसएफ घटक पुस्तकालयों जैसे टोमाहॉक, प्राइमफेस इत्यादि को अवशेष करना पड़ता है ई वेब-आईएनएफ/lib फ़ोल्डर में ई।
...
<dependencies>
<dependency>
<groupId>com.foo</groupId>
<artifactId>war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.foo</groupId>
<artifactId>war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<exclusion>
</exclusions>
</dependency>
</dependencies>
...
अब युद्ध के हर निर्भरता में रखा जाएगा:
ऊपर वर्णित समाधान के साथ इस लक्ष्य को हासिल करने के लिए एक आसान तरीका इस तरह कान pom.xml में घटक पुस्तकालय के लिए बहिष्करण बनाना है कान लाइब्रेरी को छोड़कर कान लाइब्रेरी जिसे WAR
तो हम commons-jars.jar बनाने के बाद, क्या हमें इसे 1) सर्वर/डिफ़ॉल्ट/lib या 2) कान रूट में जोड़ना चाहिए? – Rips
जाने का सबसे अच्छा तरीका नहीं है, अगला जवाब देखें! – Christophe
@toefel कृपया "अगला" उत्तर परिभाषित करें। WHOM या एक लिंक का उत्तर सहायक होगा, क्योंकि वे वोटों के आधार पर स्थानों को स्विच कर सकते हैं। – Ben