2010-09-15 13 views
7

मैं अपने प्रोजेक्ट का एक वितरित ज़िप बनाने की कोशिश कर रहा हूं जिसमें कई कॉन्फ़िगरेशन फ़ाइलें और निर्देशिकाएं हैं, साथ ही साथ मेरी प्रोजेक्ट के निष्पादन योग्य जार भी शामिल हैं। मेवेन असेंबली प्लग-इन में, मैंने पाया है कि निष्पादन योग्य जार को पूर्ण निर्भरताओं के साथ कैसे बनाया जाए। हालांकि, मैं यह समझने में सक्षम नहीं हूं कि इसे बनाने के बाद जार के आसपास ज़िप फ़ाइल कैसे बनाएं। आदर्श रूप में, मैं जार को उस निर्देशिका में ले जाना चाहता हूं जिसमें पहले से ही सही फ़ाइलें और उप-निर्देशिकाएं हैं, फिर पूरी चीज को एक साथ ज़िप करें। क्या इसे करने का कोई तरीका है?निर्भरता के साथ एक निष्पादन योग्य जार युक्त ज़िप फ़ाइल बनाने के लिए मेवेन का उपयोग

संपादित करें:

मैं अब जार के निर्माण, और एक अल्पविकसित ज़िप के रूप में अच्छी तरह से की है। मेरे विधानसभा फ़ाइल इस तरह दिखता है:

<assembly> 
    <id>financials-import-server</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <dependencySets> 
     <dependencySet> 
     </dependencySet> 
    </dependencySets> 
    <files> 
     <file> 
      <source>target/import-server-1.0.0-SNAPSHOT.jar</source> 
      <destName>service.jar</destName> 
      <outputDirectory>/</outputDirectory> 
     </file> 
    </files> 
</assembly> 

मैं ऐसे config फाइल या शेल स्क्रिप्ट के रूप में मैं की आवश्यकता होगी अन्य फ़ाइलों, सहित सहज महसूस करते हैं। मेरे पास कुछ प्रश्न शेष हैं। मैं ज़िप के भीतर खाली निर्देशिका कैसे बनाऊंगा? साथ ही, मैं उत्पादित फ़ाइल का नाम कैसे बदलूं?

सहायता के लिए धन्यवाद!

उत्तर

5

सबसे पहले, executable JAR बनाने के लिए मेवेन जेएआर प्लगइन का उपयोग करें।

फिर, (अंततः आप एक run.bat/run.sh फ़ाइल है कि आवेदन की शुरूआत करेंगे जोड़ सकते हैं), और भी all dependencies सभी आवश्यक फ़ाइलों को शामिल करने के लिए अपने विधानसभा कॉन्फ़िगर करें।

अंत में, pom.xml में अपने पैकेज लक्ष्य के लिए विधानसभा निर्माण बाँध: इस तरह

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <configuration> 
     <descriptors> 
      <descriptor>/path/to/my-assembly.xml</descriptor> 
     </descriptors> 
     </configuration> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
     </execution> 
     </executions> 
     ... 

, तो आप बस उदाहरण के लिए एक Maven आदेश mvn clean install को चलाने के लिए, अपनी परियोजना को संकलित करने की आवश्यकता होगी, और फिर बनाता है ज़िप पैकेज।

अपने प्रश्न अद्यतन करने के लिए करता है, तो मेरा उत्तर अपनी आवश्यकताओं फिट नहीं करता है, और आप भी दे सकते हैं अपने वर्तमान assembly.xml और pom.xml ...


संपादित

अपने बारे में संकोच न करें अद्यतन:

मुझे नहीं लगता कि असेंबली आपको एक खाली निर्देशिका बनाने देगी। एक विचार है कि एक खाली फ़ाइल डालें (या उदाहरण के लिए readme.txt) और अंतिम ज़िप में निर्देशिका शामिल करें। उदाहरण के लिए, अपने प्रोजेक्ट में, मैं एक logs/ निर्देशिका करना चाहते हैं, तो मैं अपने प्रोजेक्ट में एक logs/ निर्देशिका जो केवल एक readme.txt फ़ाइल है:

<fileSets> 
    <fileSet> 
     <directory>../my-package/logs</directory> 
     <outputDirectory>logs/</outputDirectory> 
    </fileSet> 
</fileSets> 

बनाई ज़िप के नाम लिए, आप इसे निर्दिष्ट कर सकते हैं pom.xml में:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-4</version> 
      <configuration> 
       <descriptors> 
        <descriptor>my-assembly.xml</descriptor> 
       </descriptors> 
       <finalName>TheName</finalName> 

अगर मैं सही हूँ, विधानसभा में इस नाम का उपयोग करेगा, IDassembly.xml फाइल में परिभाषित जोड़ने के लिए, और उपसर्ग स्वरूप निर्दिष्ट करने के लिए अनुकूलित का उपयोग करता है।

+0

धन्यवाद, मैंने इस पर आधारित कुछ काम किया, और कुछ प्रगति की। तब मैं फिर अटक गया। कोई सुझाव? – Zoe

+0

@ZoeGagnon मैंने अपना जवाब अपडेट कर दिया है। – romaintaz

+0

धन्यवाद। आपका जवाब शानदार है, और बहुत उपयोगी है। – Zoe

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