2012-04-17 20 views
5

दोनों में जार और युद्ध उत्पन्न करने के लिए हमारे पास दो अलग-अलग परियोजनाएं हैं। और और नियंत्रक दो परियोजनाओं में लगभग समान है।परियोजना

प्रोजेक्ट ए के अंदर नियंत्रक है। तो इसके लिए युद्ध पैदा करना समस्या नहीं है।

लेकिन प्रोजेक्ट बी को प्रोजेक्ट ए कंट्रोलर के नियंत्रक के जार की आवश्यकता होती है।

क्या कोई शरीर मुझे बता सकता है कि मैं परियोजना ए के नियंत्रक से जार फ़ाइल कैसे उत्पन्न कर सकता हूं जिसे मैं प्रोजेक्ट बी में उपयोग कर सकता हूं?

+1

[मैवेन अतिरिक्त जार फ़ाइल तैनात] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/754216/maven-deploy-additional-jar-file) –

उत्तर

13

ऐसी चीज के लिए डिफ़ॉल्ट समाधान युद्ध के लिए एक और दो नियंत्रक मॉड्यूल के लिए एक अलग मॉड्यूल होना है। मेवेन के साथ लड़ना शुरू मत करो।

+1

का मतलब है कि मुझे दो पोम फ़ाइल लिखने के लिए लिखना चाहिए जार फ़ाइल और अन्य युद्ध फ़ाइल के लिए? –

+0

सबसे अच्छी बात यह है कि एक बहु-मॉड्यूल बिल्ड बनाना जिसमें दो मॉड्यूल (युद्ध, नियंत्रक) और अभिभावक शामिल हैं। – khmarbaise

+3

लेकिन आप यहां वर्णित समाधान का भी उपयोग कर सकते हैं: http://stackoverflow.com/a/10189767/296328 – khmarbaise

-2

आप दोनों एक ही परियोजना में और भी स्थापित करते हैं, 1. जार उत्पन्न करने के लिए उत्पन्न कर सकते हैं, Maven-जार-प्लगइन 2. जार स्थापित करने के लिए, का उपयोग करें Maven: स्थापित-प्लगइन 3. जार, Maven उपयोग लागू करने के लिए -पोल्ड-प्लगइन

नोट: डिफ़ॉल्ट रूप से युद्ध के रूप में उपयोग करें, यह आपके प्रोजेक्ट की युद्ध फ़ाइल उत्पन्न करता है।

अधिक विस्तृत विन्यास के लिए नीचे की जांच: युद्ध के रूप में http://communitygrids.blogspot.in/2007/11/maven-making-war-and-jar-at-same-time.html

+2

आपका उत्तर वास्तव में भ्रमित है। क्या आप इसे पुनः लिखने का प्रयास कर सकते हैं? – Zero3

0

रखें परियोजना एक की पैकेजिंग। प्रोजेक्ट ए के pom.xml में मेवेन जार प्लगइन जोड़ें। "एमवीएन क्लीन पैकेज जार: जार" के साथ प्रोजेक्ट बनाएं। यह एक जार और युद्ध दोनों बना देगा।

0

जैसा कि @Shashank ने बताया, आप मेवेन को मेवेन-जार-प्लगइन भी निष्पादित कर सकते हैं। लेकिन यह केवल एक जार बनाएगा, जिसमें केवल संकलित वर्ग शामिल हैं, लेकिन वेबपैड स्रोत नहीं।

वहाँ आसान तरीका कैसे स्पष्ट रूप से mvn clean install jar:jar लागू बिना सिर्फ एक सरल mvn clean install आदेश के साथ एक बहु मॉड्यूल परियोजना में यह करना है:

बस >build>plugins को maven-jar-plugin जोड़ सकते हैं और "पैकेज" चरण में इसे कहते:

<project> 
    <packaging>war</packaging> 
    <!-- .. --> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <configuration> 
      <classifier>classes</classifier> 
     </configuration> 
     <executions> 
      <execution> 
      <id>package-jar</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

यह एक बड़ा .war और small -classes.jar artifact बना देगा।

अद्यतन 2017/06/15: दूसरी ओर, आप युद्ध फ़ाइल (न केवल पैक जावा वर्ग) है, जो की तरह एक जार फ़ाइल के रूप में नकाबपोश है की एक सटीक प्रतिलिपि की जरूरत है , आप एक WAR की जार प्रतिलिपि बनाने के लिए maven-dependency-plugin और maven-install-plugin के संयोजन का उपयोग कर सकते हैं। (मैं इस तरह के एक समाधान की जरूरत होती हुआ - मत पूछो क्यों;))

एक नया मॉड्यूल है कि युद्ध मॉड्यूल पर dependend है बनाएँ:

<project> 
    <!-- ... --> 
    <dependencies> 
    <!-- ... --> 
    <dependency> 
     <groupId>your-group-id-here</groupId> 
     <artifactId>your-war-artifact-id-here</artifactId> 
     <version>${project.version}</version> 
     <type>war</type> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>your-group-id-here</groupId> 
       <artifactId>your-war-artifact-id-here</artifactId> 
       <version>${project.version}</version> 
       <type>war</type> 
       <overWrite>true</overWrite> 
       <destFileName>jar-copy-of-war.jar</destFileName> 
      </artifactItem> 
      </artifactItems> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>true</overWriteSnapshots> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-install-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>install-copy-of-war</id> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <classifier>copy-of-war</classifier> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>your-group-id-here</groupId> 
       <version>${project.version}</version> 
       <file>${project.build.directory}/dependency/jar-copy-of-war.jar</file> 
       <generatePom>true</generatePom> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

यह की एक प्रतिलिपि बना देगा युद्ध, इसे नाम दें "- कॉपी-ऑफ-वार.जर", जबकि "प्रतिलिपि युद्ध" इस मॉड्यूल के लिए वर्गीकृत है।

संबंधित मुद्दे