首页 文章

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

提问于
浏览
0

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

  • projectRoot

  • build.gradle

  • module1 /

  • build.gradle

  • artifact1.aar

  • module2 / ....

我的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 回答

  • 2

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

    • 正如您所正确提到的,“publisher”项目中必须有一个子项目,该子项目必须包含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 插件集成,以自动发布项目的默认工件 .

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

    • implementation 'my.sample.artifact:somerandomname:1.0.0' 添加到计算机上任何项目的消费者应用程序中 .

    提及任何以这种方式发布的aar非常重要,不会带来它的依赖关系,所以你必须知道实际使用已发布的aar需要哪些库 .

    我也创建了一个example project,你可以尝试这个 .

  • 0

    如果您安装了maven,则可以使用 maven-install-plugininstall-file目标 .

相关问题