Gradle发布到Artifactory的特定回购

我正在尝试使用gradle来设置构件(APK / aar文件)构build过程,这与我习惯于使用maven的方式类似。

mvn release:prepare (Adjusts version, checks into SVN, creates the tag) mvn release:perform -Dgoals=deploy (Pushes the artifact to http://artifactory.XXX.local/artifactory/libs-releases-local/) 

我想能够运行gradle命令并获得类似的结果。 我正在使用https://github.com/researchgate/gradle-release插件发布pipe理(这工作正常,所以我很好的发布)。 但是,当我运行命令gradlew artifactoryPublish工件被部署在其他位置(就像它不尊重gradle文件中的repoKey)

D:\ my-lib-android-0.0.2> gradlew artifactoryPublish … … [buildinfo]这个版本不使用buildInfo属性文件。 :artifactoryPublish将构build描述符部署到: http://artifactory.XXX.local/artifactory/api/build构build成功部署。 在Artifactory中的http://artifactory.XXX.local/artifactory/webapp/builds/my-lib-android-0.0.2/1449880830949 >

build立成功

总时间:9.692秒

所以我的问题是如何修复我的设置,以便工件被推送到一个类似于这样的URL:

 http://artifactory.XXX.local/artifactory/libs-releases-local/com/example/my-lib-android/0.0.2/my-lib-android-0.0.2.aar 

build.gradle文件:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '3.1.2') classpath 'net.researchgate:gradle-release:2.3.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } plugins { id 'net.researchgate.release' version '2.3.4' } apply plugin: "com.jfrog.artifactory" apply plugin: 'maven-publish' apply plugin: 'net.researchgate.release' allprojects { repositories { jcenter() maven { url 'http://artifactory.XXX.local/artifactory/libs-releases-local' } } } artifactory { contextUrl = "${artifactory_contextUrl}" //The base Artifactory URL if not overridden by the publisher/resolver publish { repository { repoKey = "libs-releases-local" username = "${artifactory_user}" password = "${artifactory_password}" maven = true } } } release { revertOnFail = false } task build{ } 

gradle.properties文件:

 version=my-lib-android-0.0.3-SNAPSHOT artifactory_user=myUserName artifactory_password=myPasssword artifactory_contextUrl=http://artifactory.XXX.local/artifactory 

Solutions Collecting From Web of "Gradle发布到Artifactory的特定回购"

使用android-maven插件:

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.9.2' classpath 'com.github.dcendents:android-maven-plugin:1.0' classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:3.2.0' } } apply plugin: 'android-library' apply plugin: 'com.jfrog.artifactory-upload' apply plugin: 'android-maven' configurations { published } task sourceJar(type: Jar) { from android.sourceSets.main.java classifier "sources" } artifactoryPublish { dependsOn sourceJar } artifacts { published sourceJar } artifactory { contextUrl = "${artifactory_contextUrl}" publish { repository { repoKey = "libs-releases-local" username = "${artifactory_user}" password = "${artifactory_password}" } defaults { publishConfigs('archives', 'published') publishPom = true //Publish generated POM files to Artifactory (true by default) publishIvy = false //Publish generated Ivy descriptor files to Artifactory (true by default) } } } 

我通常使用mavenDeployer插件来做到这一点。 不知道它是否符合你的情况,但我只是把它留在这里。

 apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: 'http://arandom.nexus.com:8081/nexus/content/repositories/releases') { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD); } snapshotRepository(url: 'http://arandom.nexus.com:8081/nexus/content/repositories/snapshots') { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD); } pom.groupId = "groupId" pom.artifactId = "artifactId" pom.version = "${versionMajor}.${versionMinor}.${versionPatch}" } } } 

在这里进一步阅读本地回购