22

के साथ असेंबली पैकेज को तैनात करना हम रिलीज बिल्ड करने के लिए हडसन और maven-release-plugin का उपयोग करते हैं। अब मेरे पास एक प्रोजेक्ट है जिसमें assembly है जो सभी आवश्यक घटकों को एक साथ रखता है और फिर इच्छित निर्देशिका संरचना के साथ उन्हें .tar.gz पैकेज में पैकेज करता है।मैवेन-रिलीज-प्लगइन

अब मैं रिलीज के दौरान इस पैकेज को हमारे मैवेन रिपोजिटरी में तैनात करने के लिए रिलीज-प्लगइन प्राप्त करने का प्रयास कर रहा हूं: लक्ष्य करें, लेकिन केवल मानक सामान (स्रोत, जावाडोक, पीओएम) तैनात किए गए हैं।

मैने पहले से ही मैवेन पैकेज चरण में असेंबली लक्ष्य को बाध्य कर दिया है, और .tar.gz रिलीज के दौरान निर्माण हो जाता है, लेकिन भंडार में अपलोड नहीं किया जाता है। कोई संकेत जो मैं यहाँ गलत कर रहा हूँ?

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptors> 
     <descriptor>src/main/assembly/distribution.xml</descriptor> 
     </descriptors> 
     <finalName>${pom.artifactId}-${pom.version}</finalName> 
     <appendAssemblyId>false</appendAssemblyId> 
     <tarLongFileMode>warn</tarLongFileMode> 
    </configuration> 
    <executions> 
     <execution> 
      <id>dist-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>assembly</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

आदेश मैं निर्माण करने के लिए एक रिलीज

mvn release:prepare release:perform release:clean 
+0

हो सकता है कि अगर आप हमें कोड, या अस्पष्ट कोड हम आपको – ant

उत्तर

33

इस बीच, मुझे जो कुछ चाहिए था उसे करने के 2 तरीके मिले।

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>attach-distribution</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>target/${pom.artifactId}-${pom.version}.tar.gz</file> 
        <type>tar.gz</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

अन्य के रूप में यह हो जाता है के रूप में सरल और Maven-उपयोगकर्ता मेलिंग सूची पर किसी को है:

Maven-निर्माण सहायक-प्लगइन कलाकृतियों की सूची है कि तैनात किया जाना चाहिए करने के लिए अतिरिक्त प्रविष्टियों जोड़ने की अनुमति देता इस बात की ओर इशारा किया। असेंबली का सरल उपयोग करें: asssembly के बजाय एकल लक्ष्य: असेंबली। इस तरह जनरेटेड आर्टिफैक्ट को तैनाती चरण के दौरान भंडार में अपलोड किया जाता है।

<execution> 
     <id>dist-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> <!-- that's all :) --> 
     </goals> 
    </execution> 
+0

शेर प्लगइन आपको आर्टिफैक्ट आईडी को फिर से परिभाषित करने की अनुमति नहीं देता है – Adam

1

फ़ाइलों नियोजित करना है चलाया जाता है रिहाई प्लगइन का हिस्सा है, लेकिन तैनाती प्लगइन का (नहीं:

यहाँ विधानसभा-प्लगइन विन्यास है रिलीज अपने आप से कहीं भी सामान तैनात नहीं करता है लेकिन आप रिलीज के दौरान बुलाए जाने वाले तैनाती प्लगइन को कॉन्फ़िगर कर सकते हैं)।

आम तौर पर, तैनाती प्लगइन दूरस्थ कला भंडार में सभी कलाकृतियों को तैनात करेगा लेकिन असेंबली कलाकृतियों नहीं हैं; मैवेन किसी भी तरह से .tar.gz अभिलेखागार का उपयोग अपने भंडार में नहीं कर सकता है, इसलिए इसे पहले स्थान पर तैनात करने का अर्थ नहीं है।

आप भंडार में बेकार फ़ाइलों की प्रतिलिपि बनाने जोर देते हैं, तो आप deploy:deploy-file (see the docs) मैन्युअल रूप से एक फ़ाइल को तैनात करने का उपयोग करें और एक निष्पादन के साथ प्लगइन कॉन्फ़िगर रिहाई चरण के दौरान यह आह्वान करने के लिए आवश्यक है। लेकिन मैं अभी भी इसके खिलाफ सलाह देता हूं।

जो आप शायद खोज रहे हैं वह कहीं भी असेंबली अपलोड करने का एक तरीका है। मुझे एक प्लगइन से अवगत नहीं है जो यह करता है।

+0

Thx मदद करने के लिए सक्षम हो सकता है दिखाने के लिए, कि जिस तरह से मैं इस समय पर था, हालांकि मैं अभी काम नहीं कर मिल गया है था। लेकिन मुझे लगता है कि सभी इंफोस के अनुसार यह लगता है कि अगर कोई एक भंडार में .tar.gz फ़ाइलों को अपलोड करना चाहता है तो यह (केवल?) तरीका है। –

+0

रेपो-मेवेन में बेकार फ़ाइलों की प्रतिलिपि बनाने पर जोर देकर एक भंडार का उपयोग करने का एकमात्र साधन नहीं है। * .tar.gz फ़ाइलों का उपयोग कई अन्य पैकेजिंग टूल द्वारा किया जाता है, उदा। एपीटी, कठपुतली इत्यादि – Adam

+0

@ एडम लेकिन उन उपकरणों के पास अपनी खुद की भंडार हैं और अक्सर मेवेन भंडार का उपयोग नहीं कर सकते हैं। तो यह एक कठपुतली रिपो को अपलोड करने के लिए समझ में आता है लेकिन मैवेन रेपो के लिए नहीं। –