2011-09-07 9 views
18

मैं मैवेन का उपयोग करके एक प्रोजेक्ट रिलीज़ करने की कोशिश कर रहा हूं लेकिन रिलीज रिपोजिटरी को रिलीज़ करने के बजाय यह इसे हमारे स्नैपशॉट्स रेपो में रखता है।मैवेन रिलीज के बजाय स्नैपशॉट पर तैनात है

<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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.example.my.profiler</groupId> 
<artifactId>profilerlib</artifactId> 
<name>Profiler Lib</name> 
<version>1.0.2-SNAPSHOT</version> 
<description>Profiler Library</description> 
<scm> 
    <connection>scm:svn:https://svn.example.com/my-project/profilerlib/trunk 
    </connection> 
    <developerConnection>scm:svn:https://svn.example.com/my-project/profilerlib/trunk 
    </developerConnection> 
</scm> 
<distributionManagement> 
    <!-- Publish the versioned releases here --> 
    <repository> 
     <id>nexus</id> 
     <name>nexus</name> 
     <url>http://repo.example.com:8081/nexus/content/repositories/releases 
     </url> 
    </repository> 
    <!-- Publish the versioned releases here --> 
    <snapshotRepository> 
     <id>nexus</id> 
     <name>nexus</name> 
     <url>http://repo.example.com:8081/nexus/content/repositories/snapshots 
     </url> 
    </snapshotRepository> 
</distributionManagement> 
<!-- download artifacts from this repo --> 
<repositories> 
    <repository> 
     <id>nexus</id> 
     <name>EXAMPLE Public Repository</name> 
     <url>http://repo.example.com:8081/nexus/content/groups/public</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
<dependencies> 
    ... 
</dependencies> 
<build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <configuration> 
       <tagBase>https://svn.example.com/my-project/profilerlib/tags 
       </tagBase> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <powermock.version>1.4.6</powermock.version> 
</properties> 
</project> 
+0

क्या आपको कोई मिला इस समस्या के लिए समाधान? – mihn

+0

बहुत समय पहले, लेकिन आईआईआरसी मुझे अपने pom.xml में अलग भंडार और स्नैपशॉट रिपोजिटरी आईडी मानों को परिभाषित करना पड़ा। –

उत्तर

11
<repository> 
    <id>nexus</id><!--etc--> 
</repository> 
<snapshotRepository> 
    <id>nexus</id><!--etc--> 
</snapshotRepository> 
<!-- etc --> 
<repositories> 
    <repository> 
     <id>nexus</id> 
     <!-- etc --> 
    </repository> 
</repositories> 

यह समस्या है, तो आप तीन अलग अलग खजाने के लिए एक ही आईडी का उपयोग कर रहे हैं: जैसे

मेरे पोम लग रहा है। मेवेन इन रिपॉजिटरीज को आईडी द्वारा प्रबंधित करता है, इसलिए प्रत्येक आईडी अद्वितीय होनी चाहिए! जैसे "नेक्सस-रिलीज", "नेक्सस-स्नैपशॉट्स" और "नेक्सस" का उपयोग करें।

+0

टिप के लिए धन्यवाद, मैंने कोशिश की लेकिन मुझे अभी भी एक ही समस्या दिखाई दे रही है। मेवेन आउटपुट मदद? –

+3

यह स्वीकार्य उत्तर क्यों है यदि उसने समस्या का समाधान नहीं किया? – Ken

+0

@Ken दोनों उत्तर मान्य हैं, वे सिर्फ समस्या के दो अलग-अलग पहलुओं को दिखाते हैं। शायद दोनों ने एक साथ समस्या हल की? –

12

पीओएम संस्करण संख्या को एक स्नैपशॉट संस्करण दिखाता है। तो यदि आप इस स्थिति में पीओएम के साथ mvn deploy चलाते हैं, तो यह स्वाभाविक रूप से स्नैपशॉट्स रिपोजिटरी में एक स्नैपशॉट तैनात करेगा।

रिलीज करने के लिए, आपको release plugin के लक्ष्यों का उपयोग करने की आवश्यकता है।


दूसरी तरफ, शायद आप इसे पहले ही जानते हैं, और असली जवाब शॉन पैट्रिक फ़्लॉइड के जवाब में है।

+0

हाहा, मैंने स्पष्ट (+1) को अनदेखा किया !! –

+0

मैं दौड़ रहा हूं: एमवीएन रिलीज: रिलीज तैयार करें: एमवीएन तैनाती नहीं करें। जो मैं समझता हूं, रिलीज प्लगइन को तैनाती से पहले-स्नैपशॉट प्रत्यय को हटा देना चाहिए, नहीं? –

+1

@ user932509 आपको तैयार करना चाहिए और दो अलग-अलग चरणों में प्रदर्शन करना चाहिए, क्योंकि मुझे संदेह है कि चल रहे निष्पादन आर्टिफैक्ट (जो बुरा होगा) का संस्करण बदलता है –

19

किसी और मामले किसी को भी इस समस्या हो रही है और मौजूदा जवाब मिल रहा है उनके मुद्दों को हल नहीं है:

वहाँ कीड़े जो मतलब है कि release:prepare Git भंडार के लिए प्रतिबद्ध नहीं है रिहाई टैग बनाने से पहले के एक मुट्ठी भर रहे हैं । इसका अर्थ यह है कि release:perform में पाम फ़ाइलों में संस्करण संख्या -SNAPSHOT है और नियोक्ता स्नैपशॉट भंडार में रिलीज़ करने का प्रयास करेगा। MRELEASE-875 (2.5 को प्रभावित करता है, 2.5.1 में तय)

+0

यह मेरी समस्या थी, धन्यवाद! कुछ कारणों से मैवेन टूटी हुई 2.5 रिलीज उठा रहा था; इसे पीओएम में संस्करण निर्दिष्ट करके 2.5.1 (http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-release-plugin/2.5.1) चुनने के लिए मजबूर करना। –

+0

बस इसकी पुष्टि करें! बहुत धन्यवाद। मैंने [एक सहायता पृष्ठ] पाया (https://maven.apache.org/guides/mini/guide-releasing.html) जो 'maven-release-plugin' के '2.5' संस्करण दिखा रहा है। मैं इस पृष्ठ को अपडेट करने के लिए कहने के लिए बस [एमएल] (http://mail-archives.apache.org/mod_mbox/maven-users/201507.mbox/thread) पर एक ईमेल भेजता हूं। – boly38

2

का कारण भिन्न होता इस समस्या से फेल बेईमानी से ... लगता है कि रिहाई-प्लगइन है:

यहाँ सबसे हाल ही में दोष इस व्यवहार के लिए जिम्मेदार है एक टैग की जांच, और एक ही नाम वाली शाखा नहीं!

मैं बस इस पर असफल रहा ... मैंने अपनी रिलीज करने के लिए "1.9.0" नामक एक शाखा बनाई, और फिर एमवीएन रिलीज चलाया: तैयार करें जिसने "1.9.0" टैग भी बनाया है। जब एमवीएन रिलीज: प्रदर्शन किया गया तो उसने "1.9.0 का गिट चेकआउट किया, और 1.9.0 शाखा के सिर को उठाकर समाप्त किया, जो कि, इसमें एक स्नैपशॉट था (1.10-स्नैपशॉट)।

मेरे जीवन के दो घंटे बाद मैं वापस नहीं आऊंगा ... भविष्य में मैं शाखा नाम (उदाहरण के लिए "1.9.0-रिलीज") में "-release" प्रत्यय जोड़ रहा हूं।

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