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

时间:2018-08-10 09:58:58

标签: android gradle android-gradle maven-publish

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

  • projectRoot

  • build.gradle

  • 模块1 /

    • build.gradle

    • artifact1.aar

  • 模块2 / ....

我的artifact1.aar是已编译的工件,我无权访问源。

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

configurations.maybeCreate("default")
artifacts.add("default", file('artifact1.aar'))

通过此功能,只需引用gradle项目依赖项,即可在模块2中获得.aar中包含的代码。

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

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

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

我在4.8版中使用gradle。

2 个答案:

答案 0 :(得分:2)

在此示例中,我使用了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
            }
        }
    }
    

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

  2. 现在运行./gradlew rxbinding:publishToMavenLocal-这将把工件放入您的本地仓库

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

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

我还创建了一个example project,您可以在其中尝试此操作。

答案 1 :(得分:0)

如果已安装maven,则可以使用maven-install-plugin的{​​{3}}目标。