2014-10-11 417 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仓库。

相关问题