Я пытаюсь опубликовать многомодульную библиотеку Android (.aar) в артефакте как зависимость maven.Когда я публикую и включаю подмодули как узлы в качестве зависимостей в pom, я получаю что-то похожее на это:
<goupId>com.example.example</groupId>
<artifactId>main</artifactId>
<version>0.0.4-SNAPSHOT</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.example.example</groupId>
<artifactId>submodule1</artifactId>
<version>0.0.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example.example</groupId>
<artifactId>submodule2</artifactId>
<version>0.0.4-SNAPSHOT</version>
</dependency>
Однако, когда я пытаюсь использовать это из другого проекта с реализацией для этого артефакта, мне не удаетсяresol: com.example.example: submodule1: 0.0.4-SNAPSHOT
Когда я удаляю зависимости из подпроекта, классы недоступны, и он все равно не может скомпилироваться.
Мой файл Gradle выглядит следующим образом
apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
apply plugin: 'maven'
...
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api project(':submodule1')
api project(':submodule2')
}
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
pom.whenConfigured { pom ->
pom.dependencies.forEach { dep ->
if (dep.getVersion() == "unspecified") {
dep.setGroupId(GROUP)
dep.setVersion(VERSION_NAME)
}
}
}
}
}
}
}
publishing {
publications {
aar(MavenPublication) {
groupId packageName
version = linkLibraryVersion
artifactId project.getName()
artifact("$buildDir/outputs/aar/main-release.aar")
pom.withXml {
def dependencies = asNode().appendNode('dependencies')
configurations.getByName("releaseCompileClasspath").getResolvedConfiguration().getFirstLevelModuleDependencies().each {
if (it.moduleGroup == "example") {
def dependency = dependencies.appendNode('dependency')
dependency.appendNode('groupId', packageName)
dependency.appendNode('artifactId', it.moduleName)
dependency.appendNode('version', libraryVersion)
} else {
def dependency = dependencies.appendNode('dependency')
dependency.appendNode('groupId', it.moduleGroup)
dependency.appendNode('artifactId', it.moduleName)
dependency.appendNode('version', it.moduleVersion)
}
}
}
}
}
}
artifactory {
contextUrl = project.hasProperty('local') ? 'https://example.jfrog.io/example' : 'TOOD'
publish {
repository {
// The Artifactory repository key to publish to
repoKey = 'repo'
project.hasProperty('artifactory_username') ? System.out.println(project.artifactory_username) : System.out.println("NO USERNAME")
project.hasProperty('artifactory_password') ? System.out.println(project.artifactory_password) : System.out.println("NO PASSWORD")
username = project.hasProperty('artifactory_username') ? project.artifactory_username : ""
password = project.hasProperty('artifactory_password') ? project.artifactory_password : ""
}
defaults {
publications('aar')
publishArtifacts = true
publishPom = true
}
}
}