स्रोतों और JavaDoc के साथ SNAPSHOT को कैसे तैनात करें?


92

मैं अपने स्नैपशॉट के साथ स्रोत और javadocs तैनात करना चाहता हूं। इसका मतलब है कि मैं निम्नलिखित कमांड को स्वचालित करना चाहता हूं:

mvn clean source:jar javadoc:jar deploy

बस निष्पादित करने के लिए:

mvn clean deploy

मैं javadoc / source जनरेशन को installचरण के दौरान निष्पादित नहीं करना चाहता (यानी स्थानीय बिल्ड)।

मुझे पता है कि स्रोत / javadoc प्लगइन्स को releaseप्लगइन के निष्पादन के साथ सिंक्रनाइज़ किया जा सकता है, लेकिन मुझे यह पता नहीं चल सकता है कि इसे स्नैपशॉट रिलीज़ के लिए कैसे वायर किया जाए।

जवाबों:


76
<build>
  <plugins> 
    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <id>attach-sources</id>
          <phase>deploy</phase>
          <goals><goal>jar-no-fork</goal></goals> 
        </execution>
      </executions>
    </plugin>
    <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>attach-javadocs</id>
          <phase>deploy</phase>
          <goals><goal>jar</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
    <plugin> 
      <!-- explicitly define maven-deploy-plugin after other to force exec order -->
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>deploy</id>
          <phase>deploy</phase>
          <goals><goal>deploy</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
  </plugins> 
</build>

एक पूर्ण उदाहरण के लिए सोनाटाइप के OSS अभिभावक POM देखें ।


1
मैं इस सेटअप का उपयोग कर रहा हूं, और यह काफी अच्छी तरह से काम करता है। हालाँकि मेरे पास दो छोटे मुद्दे थे: एक, उत्पन्न स्रोत "जार" लक्ष्य में शामिल नहीं हैं, आपको "जार-नो-कांटा" की आवश्यकता होगी। दो, रिलीज प्लगइन में एक बग है जो दो बार रिलीज स्रोतों को उत्पन्न करने का कारण होगा (और इसलिए दो बार तैनात किया गया है, जो भंडार प्रबंधकों के साथ समस्याओं को जन्म देगा)
mglauche

1
maven-source-plugin:jarpackageडिफ़ॉल्ट रूप से चरण में संलग्न होता है , इसलिए आप <phase>verify</phase>एक ही चीज़ को छोड़ सकते हैं और पूरा कर सकते हैं । इसके अलावा मुझे यकीन नहीं है कि आप इसे वैसे भी सत्यापित करने के लिए संलग्न करेंगे क्योंकि उस चरण का उद्देश्य "परियोजना को पैकेज करना और एकीकरण परीक्षण चलाना" है।
मैट बी

@mglauche @matt आपकी टिप्पणियों के लिए धन्यवाद। मैंने अभी उचित बदलाव किए हैं।
sfussenegger

1
@ हेनरिक ओके, मैंने स्पष्ट रूप से मावेन-तैनाती-प्लगइन जोड़ा है और साथ ही मावेन लगता है (या कोशिश करता है) ओडर में निष्पादन की गारंटी देने के लिए प्लगइन्स को पोम में परिभाषित किया गया है। हालांकि इसके लिए कुछ प्रयोग करने की आवश्यकता हो सकती है।
sfussenegger

1
रैंडम आईडी का उपयोग करने से नया निष्पादन होता है मुझे लगा कि आप डिफ़ॉल्ट एक निष्पादन को "रीमैप" करना चाहते हैं
हुरडा

48

बस एक विकल्प जोड़ने के लिए जो आपको प्लगइन कॉन्फ़िगरेशन के साथ टक करने की आवश्यकता नहीं है:

mvn -DperformRelease=true [goals]

क्रेडिट से mcbeelen को जाता है http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998


4
मैं यह उल्लेख करना चाहूंगा कि यह सुविधा भविष्य में मावेन (संभवतः मावेन -4?) की रिलीज़ में जा सकती है। मावेन सुपर पोम के प्रोफाइल सेक्शन में यहाँ टिप्पणी देखें: maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html
Dan

45

डैन द्वारा संदर्भित लेख में एक और दृष्टिकोण का भी उल्लेख किया गया है जो बिना किसी संशोधन के काम करता है और जल्द ही कभी भी दूर नहीं होगा:

मवन क्लीन जवादोक: जार सोर्स: जार इंस्टॉल

जो मावेन 3+ के साथ ठीक काम करता है ...

mvan clean javadoc: जार स्रोत: जार परिनियोजित

जिसे मैंने जेनकींस से लेकर नेक्सस तक तैनात किया है।

यह दृष्टिकोण अच्छा था क्योंकि मुझे केवल कुछ जेनकिंस नौकरियों को संशोधित करना था और मेरे पॉम के साथ गड़बड़ करने की आवश्यकता नहीं थी।


5
एक pom- मुक्त समाधान के लिए धन्यवाद! ध्यान दें कि javadoc: jar और / या source: jar को स्थापित या तैनात होने से पहले दिखाई देना चाहिए , या अतिरिक्त जार तैनाती के लिए "संलग्न" नहीं होगा।
सीन

2
FWIW इन विकल्पों के साथ भी काम करता है package:mvn clean javadoc:jar source:jar package
Ecoe

यह अच्छा जवाब है, क्योंकि यह आपको अपने रेपो में स्रोतों और जेवाडॉक को बनाने और अपलोड करने की सटीक कमांड बताता है।
रुसलफॉफ़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.