【发布时间】:2021-10-17 05:43:45
【问题描述】:
我有一个库 (Lib1),它依赖于我从源代码和 Lib1 一起构建的其他几个库(Lib2 和 Lib3)。这三个都作为工件发布,工件 ID 分别为 my-artifact-lib1、my-artifact-lib2 和 my-artifact-lib3。当我通过 maven-publish 插件发布工件时,我会在 pom 文件中得到一个依赖项元素,如下所示:
<dependencies>
<dependency>
<groupId>org.my.group</groupId>
<artifactId>Lib2</artifactId>
<version>unspecified</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.my.group</groupId>
<artifactId>Lib3</artifactId>
<version>unspecified</version>
<scope>runtime</scope>
</dependency>
</dependencies>
可以通过在项目级别 build.gradle 的 allprojects{} 块中放置版本属性来修复未指定的版本,但更大的问题是工件 id 与发布数据不匹配:
Lib1Publication(MavenPublication) {
from components.release
groupId "org.my.group"
artifactId "my-artifact-lib1"
version "${version_major}.${version_minor}."+getPatchVersion()
}
Lib2Publication(MavenPublication) {
from components.release
groupId "org.my.group"
artifactId "my-artifact-lib2"
version "${version_major}.${version_minor}."+getPatchVersion()
}
Lib3Publication(MavenPublication) {
from components.release
groupId "org.my.group"
artifactId "my-artifact-lib3"
version "${version_major}.${version_minor}."+getPatchVersion()
}
这会产生一个问题,即任何尝试使用 my-artifact-lib1 作为依赖项并需要 my-artifact-lib2 和 my-artifact-lib3 作为传递依赖项的客户端最终会搜索工件 id Lib2 和 Lib3 而一无所获.
Lib1的模块级build.gradle与其他两个模块的项目依赖如下:
dependencies {
implementation project(path: ':Lib2')
implementation project(path: ':Lib3')
}
如何获取为 my-artifact-lib1 生成的传递依赖项,以便为项目依赖项使用正确的工件 ID,而不是它们的模块名称?
【问题讨论】:
标签: android maven gradle maven-publish