Maven 我可以在单个artifactId上发布多个工件吗?
我知道如何使用singleMaven 我可以在单个artifactId上发布多个工件吗?,maven,gradle,Maven,Gradle,我知道如何使用singleartifactId发布单个工件。我正在使用gradle发布我的工件。我的工件是.aar文件。 我发布我的工件如下: publishing { publications { myPublication(MavenPublication) { groupId 'com.example.project' version '1.0.2' artifactId 'myProject'
artifactId
发布单个工件。我正在使用gradle发布我的工件。我的工件是.aar文件。
我发布我的工件如下:
publishing {
publications {
myPublication(MavenPublication) {
groupId 'com.example.project'
version '1.0.2'
artifactId 'myProject'
artifact("$buildDir/outputs/aar/mySDK-release.aar")
}
}
repositories {
mavenLocal()
}
}
现在我想使用单个
artifactId
TLDR发布多个工件:使用分类器
既然您要发布给Maven,让我们阅读他们的文档: 上面定义的POM是Maven允许的最小值。
groupId:artifactId:version
都是必填字段(尽管是groupId
如果它们是继承的,则不需要显式定义版本
来自父级-稍后将详细介绍继承)。这三个领域的作用很大
就像一个地址和时间戳。这标志着一个特定的位置
存储库,就像Maven项目的坐标系:
- groupId:这在组织或项目中通常是唯一的。例如,所有的核心Maven工件都是活的(很好,应该是活的)
在groupId
下。组ID不一定使用 点表示法,例如junit项目。请注意 点标记的groupId不必与包相对应 项目包含的结构。然而,这是一种良好的做法 跟随。当存储在存储库中时,组的行为与 Java打包结构在操作系统中不起作用。点是 替换为操作系统特定的目录分隔符(如Unix中的“/”) 它将成为基础存储库中的相对目录结构。 在给出的示例中,org.apache.maven
组位于 目录org.codehaus.mojo
$M2\u REPO/org/codehaus/mojo
- artifactId:artifactId通常是项目的名称。虽然groupId很重要,但是
小组在讨论中很少提到groupId(他们经常
所有项目都必须具有相同的ID,例如项目组ID:
)。它与groupId一起创建一个 将此项目与世界上所有其他项目分开(在 至少,它应该:))。除了groupId之外,artifactId 在存储库中定义工件的居住区。在 在上述项目中,org.codehaus.mojo
位于我的项目
$M2\u REPO/org/codehaus/mojo/my project
- 版本:这是命名拼图的最后一块
表示单个项目,但它们不能描述 我们谈论的是该项目的哪一个化身。我们想要这个吗 junit:junit是2018年版(4.12版)还是2007年版(3.8.2版)?在里面 简短:代码更改,这些更改应该进行版本控制,并且 元素使这些版本保持一致。它也用于 工件的存储库将版本彼此分离<代码>我的项目 1.0版文件位于目录结构中groupId:artifactId
$M2\u REPO/org/codehaus/mojo/my project/1.0
artifactId
下发布两个工件的唯一方法是使用不同的版本
如果选中,您将看到可以使用所谓的限定符,如1.0.0-ALPHA
,1.0.0-RC
。这实际上就是Java文档和源代码在Maven存储库中发布的方式:坐标为a.b.c:d:1.0.0
的工件可能会在a.b.c:d:1.0.0-javadoc
下发布Java文档,在a.b.c:d:1.0-sources>下发布源代码
所以,使用限定符来完成这个技巧
限定符在Gradle中的工件端指定:
publishing {
publications {
myPublication(MavenPublication) {
groupId 'com.example.project'
version '1.0.2'
artifactId 'myProject'
artifact("$buildDir/outputs/aar/mySDK-release-2.aar") {
// These values can also be specified in the task that generates the AAR.
classifier "q1"
}
artifact("$buildDir/outputs/aar/mySDK-release-1.aar") {
classifier "q2"
}
}
}
}
那么你想如何区分它们呢?通过分类器?是的,我可以用分类器来区分它们。谢谢你的知识。