Android gradle aar многомодульная публикация - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь опубликовать многомодульную библиотеку 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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...