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

Android 如何在我的maven本地存储库中使用gradle发布现有aar?,android,gradle,android-gradle-plugin,maven-publish,Android,Gradle,Android Gradle Plugin,Maven Publish,我有一个具有以下结构的项目: 项目根 格雷德尔先生 模块1/ 格雷德尔先生 人工制品1.aar 模块2/ 我的artifact1.aar是一个已编译的工件,我无法访问源代码 我的模块1渐变生成文件如下所示: configurations.maybeCreate("default") artifacts.add("default", file('artifact1.aar')) 有了它,.aar中包含的代码可以在模块2中通过简单地引用gradle项目依赖项来获得 但是我想在我的mave

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

  • 项目根

  • 格雷德尔先生

  • 模块1/

    • 格雷德尔先生

    • 人工制品1.aar

  • 模块2/

我的artifact1.aar是一个已编译的工件,我无法访问源代码

我的模块1渐变生成文件如下所示:

configurations.maybeCreate("default")
artifacts.add("default", file('artifact1.aar'))
有了它,.aar中包含的代码可以在模块2中通过简单地引用gradle项目依赖项来获得

但是我想在我的maven local中发布.aar,以便其他android项目可以访问它

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

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


我在4.8版中使用了gradle。

我在本例中使用了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库
    插件)与
    maven publish
    插件集成,以自动发布项目的默认工件

  • 现在运行
    /gradlew rxbinding:PublishToAvenLocal
    ——这将把工件放入本地repo中

  • 实现'my.sample.artifact:somerandomname:1.0.0'
    添加到您机器上任何项目的消费者应用程序中
  • 提到任何以这种方式发布的aar都是非常重要的,因为它不会带来它的依赖性,所以您必须知道实际使用已发布的aar需要哪些LIB


    我还创建了一个插件,您可以在其中进行尝试。

    如果您安装了maven,您可以使用
    maven安装插件的目标。

    谢谢Balasz:)。正是我想要的。