如何在我的 Maven 本地存储库中发布一个现有的带有 gradle 的 aar?
How to publish in my maven local repository an existing aar with gradle?
我有一个具有以下结构的项目:
projectRoot
build.gradle
模块1/
build.gradle
artifact1.aar
模块2/
....
我的 artifact1.aar 是一个编译的工件,我无法访问源代码。
我的模块 1 gradle 构建文件如下:
configurations.maybeCreate("default")
artifacts.add("default", file('artifact1.aar'))
通过简单引用 gradle 项目依赖项,.aar 中包含的代码可在模块 2 中使用。
但我想在我的本地 maven 中发布 .aar,以便其他 android 项目可以访问它。
我检查了 maven-publish 插件和 android-maven-publish 插件,但这两个插件似乎是在 java-library 插件或 com.android.library 插件之后调用的。
所以我的问题是如何在我的 Maven 本地存储库中发布带有 gradle 的现有 aar?
我使用的是 gradle 版本 4.8。
我在这个例子中使用了 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,您可以在其中尝试。
如果您安装了 maven,则可以使用 maven-install-plugin
的 install-file
目标。
我有一个具有以下结构的项目:
projectRoot
build.gradle
模块1/
build.gradle
artifact1.aar
模块2/ ....
我的 artifact1.aar 是一个编译的工件,我无法访问源代码。
我的模块 1 gradle 构建文件如下:
configurations.maybeCreate("default")
artifacts.add("default", file('artifact1.aar'))
通过简单引用 gradle 项目依赖项,.aar 中包含的代码可在模块 2 中使用。
但我想在我的本地 maven 中发布 .aar,以便其他 android 项目可以访问它。
我检查了 maven-publish 插件和 android-maven-publish 插件,但这两个插件似乎是在 java-library 插件或 com.android.library 插件之后调用的。
所以我的问题是如何在我的 Maven 本地存储库中发布带有 gradle 的现有 aar?
我使用的是 gradle 版本 4.8。
我在这个例子中使用了 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,您可以在其中尝试。
如果您安装了 maven,则可以使用 maven-install-plugin
的 install-file
目标。