2013-05-25 67 views
26

我剛剛學習Gradle,它來自Ant + Ivy和Maven背景,我試圖圍繞正確的方式來發布我的發佈版本軟件使用gradle。我還需要不斷整合我的項目,而不必不斷髮布獨立的工件。通過持續集成發佈Gradle中的發佈快照vs發佈

螞蟻+艾維

在螞蟻+艾維的世界,我可以創造publishSnapshot和publishRelease目標。這些可以分別使用不同的常春藤解析器來解析併發布到Nexus中的單獨快照或發佈存儲庫。

Maven的

與Maven,我可以在我的distributionManagement部分定義snapshotRepositoryrepository有行家發佈到我另外的快照或發佈的Nexus倉庫。

搖籃

現在進入gradle這個。我怎樣才能實現這個相同的功能?我正在使用ivy風格的存儲庫。

謝謝您提供的任何見解。

ANSWER

感謝勒內的答案下面,我終於能夠建立一個可行的解決方案。問題的關鍵是我需要不斷整合所有項目。爲此,我認爲使用版本號latest.integration聲明依賴關係是拉入我的庫的最新版本的唯一方法,因此我需要使用ivy樣式的存儲庫。

事實上,還有其他方法可以使用最新版本的庫來持續集成我的軟件在所有項目中。解決方法是使用uploadArchives,正如René列出的那樣(也請注意,您需要使用apply plugin: 'maven'才能正常工作。確保您的存儲庫也是maven樣式,並且在聲明依賴關係時,可以使用動態版本號here在我的例子中,我在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

Nexus不支持ivy風格的存儲庫。因爲Maven,Gradle,Gant,sbt,Leiningen,Ivy等所有構建工具都能理解,所以最好使用Maven存儲庫格式。 –

+0

我似乎能夠將ivy設置發佈到Nexus上?我需要發佈爲常春藤爲了使用latest.integration。如果我在Nexus中切換到maven repo格式,我將無法使用此功能。 – 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

因此,與僅使用maven插件相比,此解決方案的優點是什麼? – Janosch