Опубликовать 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 - Как опубликовать артефакты из нескольких модулей в проекте?

Другие вопросы по тегам