2015-12-30 2 views
1

Плагины используются, являются: 'com.jfrog.artifactory' и 'Maven опубликовать'Опубликовать APK в Artifactory с Artifactory публиковать и Maven публиковать

Корневой 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 артефакт (The APK построен, я ve проверено, что оно существует и правильно названо и находится на правильном пути).

Выход:

$ ./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 
+0

Я спекулируя, но корень проект не имеет публикаций Maven. Что делать, если вы добавили раздел 'artifactory {}' в приложение build.gradle? – RaGe

+0

Добавление 'artifactory {}' в приложение build.gradle не привело к разнице. – bmg

ответ

2

Вы должны сказать Artifactory плагин, что именно вы хотите опубликован. Проверьте свойства публикации/publishConfigs на artifactory plugin.

+0

Я использую эту ссылку в качестве шаблона, но я не могу понять, как это сделать, поскольку я новичок в стиле град. – bmg

+0

Переместите закрытие 'artifactory' из сценария создания корня в скрипт сборки модуля, а затем добавьте' публикации ('MavenPublication') 'к вашим значениям по умолчанию. «MavenPublication» в этом случае является тем, что вы указали в качестве своего имени в закрытии публикации. –

+0

Не работает, выход я получаю: 'Публикация с именем 'MavenPublication' не существует для проекта ':' in task ': artifactoryPublish'.' Перемещение плагинов и закрытие' artifactoryPublish' в проект приложения дает тот же сообщение, за исключением '... для проектов ': app' in task ...' Здесь должна быть действительно простая ошибка. – bmg

1

Во-первых, я не уверен, что публикация apk для Artifactory - это то, что вы хотите. Это приложение Android (apk) или библиотека Android (aar), которую вы хотите опубликовать в Artifactory? В любом случае, Овайс Али прав. Вы должны указать в корневом уровне вашего проекта build.gradle, что должно быть опубликовано, следующим образом:

artifactory { 
    defaults { 
     publications('apk') 
     publishArtifacts = true 
     publishPom = true 
    } 
} 

Даже тогда, я думаю, вы могли бы еще столкнуться с некоторыми дальнейшими проблемами. Смотрите это переполнение стеки поток для подобной проблемы, которые я столкнулся и решения, которое я пришел к:

Gradle Artifactory Plugin - How to publish artifacts from multiple modules in a project?

Смежные вопросы