如何在我的 Maven 本地存储库中使用 gradle 发布现有的 aar?

col*_*inc 0 android gradle android-gradle-plugin maven-publish

我有一个具有以下结构的项目:

  • 项目根

  • 构建.gradle

  • 模块 1/

    • 构建.gradle

    • 神器1.aar

  • 模块 2/ ....

我的 artifact1.aar 是编译后的工件,我无法访问源代码。

我的模块 1 gradle 构建文件如下:

configurations.maybeCreate("default")
artifacts.add("default", file('artifact1.aar'))
Run Code Online (Sandbox Code Playgroud)

有了这个,.aar 中包含的代码可以通过简单地引用 gradle 项目依赖项在模块 2 中使用。

但我想在我的 maven 本地发布 .aar,以便其他 android 项目可以访问它。

我检查了 maven-publish 插件和 android-maven-publish 插件,但这两个插件似乎是在 java-library 插件或 com.android.library 插件之后调用的。

所以我的问题是如何在我的 Maven 本地存储库中发布一个带有 gradle 的现有 aar ?

我在 4.8 版中使用 gradle。

小智 8

我在这个例子中使用了 rxbinding aar。

  1. 正如您正确提到的,“发布者”项目中必须有一个子项目,该子项目必须包含 aar,以及一个包含以下内容的构建文件:

    // rxbinding/build.gradle
    apply plugin: "maven-publish"
    
    configurations.maybeCreate("default")
    def publishArtifact = artifacts.add("default", file('rxbinding-2.1.1.aar'))
    
    publishing {
        publications {
                aar(MavenPublication) {
                groupId = 'my.sample.artifact'
                artifactId = 'somerandomname'
                version = '1.0.0'
                artifact publishArtifact
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    您可以将maven-publish插件应用到任何项目,但是您必须手动定义工件,就像我们刚刚在这里所做的那样。一些插件(如java-library插件)与maven-publish插件集成以自动发布项目的默认工件。

  2. 现在运行./gradlew rxbinding:publishToMavenLocal- 这应该将工件放入您的本地存储库

  3. implementation 'my.sample.artifact:somerandomname:1.0.0'在您机器上的任何项目中添加到消费者应用程序。

提及任何以这种方式发布的 aar 非常重要,不会带来它的依赖项,因此您必须知道实际使用发布的 aar 需要哪些库。

我还创建了一个示例项目,您可以在其中尝试。