2014-10-11 79 views
2

我在build.gradle如下:如何告訴gradle在SNAPSHOT發行版上執行uploadArchives?

uploadArchives { 
    repositories { 
    mavenDeployer { 
     configuration = configurations.deployerJars 
     String keyFile = "/Users/myusername/.ssh/[email protected]" 

     repository(url: "scp://myhost.com/var/maven/repository") { 
     authentication(userName: "maven", privateKey: keyFile) 
     } 
    } 
    } 
} 

這個偉大的工程 - 有一點需要注意:它僅上傳發布版本。我知道我可以指定snapshotRepository來讓它上傳快照,但我真正想要的是知道如何調用此行爲。我想我的快照轉到相同的回購協議的發行版本(我認爲這是默認的行爲),但是當我做:

./gradlew uploadArchives./gradlew assembleDebug uploadArchives

它首先構建release buildType,並上載這個。我怎麼能告訴uploadArchives我希望它上傳快照構建(即調試)?

回答

1

我花了一些使用Google找到一個解決方案,以便離開這個位置給別人:

您可以依賴於uploadArchives任務新任務,但檢查版本並刪除dependsOndisable的任務,如果不是快照如:

task uploadSnapshotArchives(dependsOn: uploadArchives) { 
    if (!version.endsWith("-SNAPSHOT")) { 
     enabled = false; 
     dependsOn = []; 
    } 
} 
2

你需要把你用的versionName -SNAPSHOT

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0-SNAPSHOT" 
    } 
} 

uploadArchives { 
    repositories.mavenDeployer { 

     snapshotRepository(url: '.../snapshots') { 
      authentication(userName: NULL_NEXUS_USER, password: NULL_NEXUS_PWD) 
     } 

     repository(url: '.../releases') { 
      authentication(userName: NULL_NEXUS_USER, password: NULL_NEXUS_PWD) 
     } 

然後./gradlew clean build uploadFiles將它上傳到snaphots倉庫。

相關問題