Опубликовать apk для Artifactory с artifactory-publish и maven-publish
Используемые плагины: "com.jfrog.artifactory" и "maven-publish"
Корень build.gradle:
buildscript {
repositories {
maven {
url 'http://localhost:8081/artifactory/globalmaven'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.0"
}
}
allprojects {
repositories {
maven {
url 'http://localhost:8081/artifactory/globalmaven'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
group = 'com.my.package'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
artifactoryPublish {
clientConfig.info.setBuildName('My_special_build_name')
clientConfig.info.setBuildNumber('1')
}
artifactory {
contextUrl = 'http://localhost:8081/artifactory'
publish {
repository {
repoKey = 'Libs-snapshot-local'
username = project.getProperties().artifactory_user
password = project.getProperties().artifactory_password
}
defaults {
publishArtifacts = true
publishPom = false
publishIvy = false
}
}
resolve {
repository {
repoKey = 'globalmaven'
}
}
}
И приложение build.gradle
apply plugin: 'com.android.application'
version = "1.0"
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.my.package"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName version
}
buildTypes {
debug {
versionNameSuffix "-SNAPSHOT"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:23.0.1'
}
publishing.publications {
apk(MavenPublication) {
groupId group
artifactId 'MyArtifact'
artifact("$buildDir/outputs/apk/${project.getName()}-debug.apk")
}
}
Проблема в том, что apk не загружен в Artifactory, загружается дескриптор сборки, и все выглядит хорошо, только нет артефакта apk (apk собран, я проверил, что он существует и назван правильно и находится в правильном пути),
Выход:
$ ./gradlew artifactoryPublish
[buildinfo] Not using buildInfo properties file for this build.
:artifactoryPublish
Deploying build descriptor to: http://localhost:8081/artifactory/api/build
Build successfully deployed. Browse it in Artifactory under http://localhost:8081/artifactory/webapp/builds/My_special_build_name/1
BUILD SUCCESSFUL
2 ответа
Вам нужно сообщить плагину артефакта, что именно вы хотите опубликовать. Проверьте свойства публикации /publishConfigs в подключаемом модуле.
Во-первых, я не уверен, что публикация apk в Artifactory - это то, что вы хотите. Это приложение для Android (apk) или библиотека Android (aar), которое вы хотите опубликовать в Artifactory? В любом случае, Оваис Али прав. Вы должны указать на корневом уровне вашего проекта build.gradle
что должно быть опубликовано, следующим образом:
artifactory {
defaults {
publications('apk')
publishArtifacts = true
publishPom = true
}
}
Даже тогда, я думаю, вы можете столкнуться с некоторыми дополнительными проблемами. См. Этот поток переполнения стека для аналогичной проблемы, с которой я столкнулся, и решения, к которому я пришел:
Gradle Artifactory Plugin - Как опубликовать артефакты из нескольких модулей в проекте?