У меня есть приложение, которое использует две библиотеки проектов, libDevice и libCloud.Мое приложение имеет libDevice в качестве зависимости, а libDevice имеет libCloud в качестве зависимости.Вот некоторые выдержки из моих файлов build.gradle:
Приложение верхнего уровня build.gradle:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1"
}
}
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
allprojects {
artifactory {
contextUrl = 'http://localhost:8081/artifactory'
publish {
repository {
repoKey = 'example-repo-local'
username = artifactory_username
password = artifactory_password
}
defaults {
publications('aar')
publishArtifacts = true
properties = ['qa.level': 'basic', 'q.os': 'android', 'dev.team': 'core']
publishPom = true
}
}
}
repositories {
google()
jcenter()
maven {
url "http://localhost:8081/artifactory/example-repo-local"
credentials {
username = "${artifactory_username}"
password = "${artifactory_password}"
}
}
}
}
В приложении build.gradle я добавляюlibDevice в зависимостях:
implementation project(path: ':..:deviceLibrary:libDevice')
В libDevice build.gradle я добавляю libCloud в качестве зависимости и определяю параметры публикации
в зависимостях
implementation project(path: ':..:cloudlibrary:libCloud')
и внизуof build.gradle:
publishing.publications {
aar(MavenPublication) {
groupId lib_device_library_group_id
version lib_device_library_version
artifactId lib_device_library_artifact_id
artifact("$buildDir/outputs/aar/${artifactId}.aar")
}
}
И в libCloud я также добавляю настройки публикации
publishing.publications {
aar(MavenPublication) {
groupId lib_cloud_library_group_id
version lib_cloud_library_version
artifactId lib_cloud_library_artifact_id
artifact("$buildDir/outputs/aar/${artifactId}.aar")
}
}
Когда я пытаюсь gradlew собрать, пожалуйста, опубликуйте артефактЯ получил BUILD SUCCESSFUL, но не все aar / pom сделаны / развернуты, только libDevice.Это не хорошо, это приводит к большому количеству исключений, не найденных в классе;)
Я могу заставить его работать, когда я:
1) удаляю настройки публикации в libDevice
2) gradlew assemblyRelease artifactoryPublish
3) удалить настройки публикации в libCloud и поместить параметры публикации в libDevice
4) gradlew assemblyRelease artifactoryPublish
При этом мои два файла генерируются,развернуто, и мое приложение запускается и счастлив.Но я хотел бы знать, как нет, чтобы выполнить эти четыре шага.
Я хотел бы запустить gradlew assemblyRelease artifactoryPublish и опубликовать мои два документа.Это должно быть возможно, не так ли?:)