2013-05-25 6 views
26

के साथ मैं सिर्फ Gradle सीख रहा हूँ, दोनों एक चींटी + आइवी और Maven पृष्ठभूमि से आ रहा है और मैं उचित तरीके से चारों ओर मेरे सिर लपेटो करने के रिलीज़ संस्करण प्रकाशित करने के लिए कोशिश कर रहा हूँ मेरी ग्रेडल का उपयोग कर सॉफ्टवेयर। मुझे लगातार स्वतंत्र कलाकृतियों को जारी किए बिना मेरी परियोजनाओं को लगातार एकीकृत करने की आवश्यकता है।स्नैपशॉट प्रकाशित बनाम Gradle में रिलीज प्रकाशित सतत एकीकरण

चींटी + आइवी

चींटी + आइवी दुनिया में, मैं publishSnapshot और publishRelease लक्ष्य बना सकते हैं। ये प्रत्येक अलग-अलग स्नैपशॉट को हल करने और प्रकाशित करने के लिए अलग-अलग आइवी रिज़ॉल्यूवर का उपयोग कर सकते हैं या नेक्सस में रिलीज रिपोजिटरीज का उपयोग कर सकते हैं।

Maven

Maven के साथ, मैं Maven मेरी अलग स्नैपशॉट को प्रकाशित करने या नेक्सस में खजाने को रिहा करने के लिए मेरी distributionManagement अनुभाग में एक snapshotRepository या repository परिभाषित कर सकते हैं।

Gradle

अब Gradle दर्ज करें। मैं इसी कार्यक्षमता को कैसे प्राप्त कर सकता हूं? मैं आईवी स्टाइल रिपॉजिटरीज का उपयोग कर रहा हूं।

किसी भी अंतर्दृष्टि प्रदान कर सकते हैं के लिए धन्यवाद।

उत्तर

रेने के जवाब के लिए धन्यवाद नीचे, मैं अंत में समस्या का समाधान बनाने के लिए कर रहा था। इस मामले का मुद्दा यह था कि मुझे अपनी सभी परियोजनाओं में लगातार एकीकृत करने की आवश्यकता थी। ऐसा करने के लिए मैंने सोचा था कि एक निर्भरता संस्करण संख्या latest.integration का उपयोग कर की घोषणा मेरी पुस्तकालयों के नवीनतम संस्करण में खींचने के लिए एक ही रास्ता था, और इसलिए मैं आइवी लता शैली रिपोजिटरी प्रयोग की जरूरत है।

वास्तव में, क्रम लगातार सभी परियोजनाओं के पार अपने सॉफ़्टवेयर को एकीकृत करने में पुस्तकालयों के नवीनतम संस्करण में खींचने के लिए अन्य तरीकों से देखते हैं। समाधान के रूप में दिखाया गया है hereuploadArchives उपयोग करने के लिए बिल्कुल के रूप में रेने नीचे (यह भी ध्यान दें कि आप काम करने के लिए इस बात के लिए apply plugin: 'maven' करने की आवश्यकता होगी सूचीबद्ध किया है। सुनिश्चित करें कि आपके खजाने भी Maven शैली रहे हैं, और जब एक निर्भरता की घोषणा, आप गतिशील संस्करण संख्याओं का उपयोग कर सकते हैं । मेरे मामले में, मैं अपने common.gradle में सूचीबद्ध एक वैश्विक संस्करण संख्या और नीचे की ओर परियोजनाओं में, मैं version: version इस्तेमाल किया संदर्भ के लिए वैश्विक संस्करण वेरिएबल। इस तरह, अपने सिस्टम में प्रत्येक विरूपण साक्ष्य एक ही संस्करण है। जब इसे जारी करने का समय है , मैं 1.0 करने के लिए 1.0-स्नैपशॉट के इस बदल सकते हैं और क्रम में हर एक का निर्माण कर सकते हैं।

उत्तर

45

आप 'अपलोड' कार्य में स्नैपशॉट और रिहाई भंडार कॉन्फ़िगर कर सकते हैं (उदाहरण के लिए uploadArchives) कार्य:

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: 'http://myCompanyRepo.com:8081/releases') { 
       authentication(userName: 'admin', password: 'password'); 
      } 
      snapshotRepository(url: 'http://myCompanyRepo.com:8081/snapshots') { 
       authentication(userName: 'admin', password: 'password'); 
      } 
     } 
    } 
} 

*-SNAPSHOT संस्करणों snapshotRepository के लिए प्रयोग किया जाता है। अन्यथा रिलीज रेपो का उपयोग किया जाता है।

+0

माफ करना, मैं स्पष्ट किया जाना चाहिए था कि मैं आइवी लता शैली का उपयोग कर रहा खजाने। मैं सवाल अपडेट करूंगा। – dev

+0

नेक्सस आईवी स्टाइल रिपॉजिटरीज़ का समर्थन नहीं करता है। मैवेन रिपॉजिटरी प्रारूप का उपयोग करना बेहतर है क्योंकि इसे मेवेन, ग्रैडल, गैंट, एसबीटी, लीनिंगेन, आइवी और अन्य समेत सभी बिल्ड टूल्स द्वारा समझा जाता है .. –

+0

मैं नेक्सस में आईवी सेटिंग्स के साथ प्रकाशित करने में सक्षम हूं? नवीनतम.in एकीकरण का उपयोग करने के लिए मुझे आईवी के रूप में प्रकाशित करने की आवश्यकता है। अगर मैं नेक्सस में एक मेवेन रेपो प्रारूप में स्विच करता हूं तो मैं इस सुविधा का उपयोग नहीं कर पाऊंगा। – dev

36

आप नए maven-publish प्लगइन का उपयोग करना चाहते हैं, तो आप एक if कथन का उपयोग विभिन्न खजाने को अपलोड कर सकते हैं:

apply plugin: 'maven-publish' 

... 

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
     } 
    } 
    repositories { 
     maven { 
      credentials { 
       username "anonymous" 
      } 

      if(project.version.endsWith('-SNAPSHOT')) { 
       url "http://example/artifactory/libs-snapshot-local" 
      } else { 
       url "http://example/artifactory/libs-release-local" 
      } 
     } 
    } 
} 

संदर्भ: maven-publish and setting snapshotRepository and releaseRepository

+1

तो मैवेन प्लगइन का उपयोग करने के बजाय इस समाधान का क्या फायदा है? – Janosch

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