2014-10-11 2 views
2

У меня есть следующие в моей build.gradle:Как я могу сказать gradle для выполнения uploadArchives в выпуске SNAPSHOT?

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

Потребовалось некоторое погуглите, чтобы найти решение, поэтому, оставляя это здесь для других:

Вы можете создать новую задачу в зависимости от uploadArchives задачи, но проверить версию и удалить dependsOn и disable задачу, если не в снимок, например:

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 загрузит его в хранилище снимков.