我有一些问题试图弄清楚我如何上传到maven神器版本的不同文件夹,然后在该文件夹中生成了味道罐/战争/ aars。
例如,我收到了version 1.0.0
和groupId com.example
的工件。
问题是,当将其上传到 Nexus 时,文件夹结构最终为com/example/10-flavor1
com/example/10-flavor2
。
这是我在gradle中得到的:
uploadArchives {
repositories {
mavenDeployer {
repository(url:"http:/nexus/content/repositories/releases/") {
authentication(userName: "username", password:"password")
}
addFilter('flavor1Release') { artifact, file ->
artifact.attributes.classifier.equals("flavor1Release")
}
addFilter('flavor2Release') { artifact, file ->
artifact.attributes.classifier.equals("flavor2Release")
}
pom('flavor1').artifactId = "artifactExample"
pom('flavor1').version = "1.0.0"
pom('flavor1').groupId = "com.example"
pom('flavor2').artifactId = "artifactExample"
pom('flavor2').version = "1.0.0"
pom('flavor2').groupId = "com.example"
}
}
}
我想知道是否有一种自定义存储库请求的方法,以便我们可以传递我们需要为每个工件创建的确切文件夹。 或任何能够真正完成这项工作的东西。
答案 0 :(得分:2)
这违反了Maven Coordinates groupId:artifactId:version
的理念:
上面给出的三个要素指向一个项目的特定版本,让Maven知道我们正在处理谁,...
坐标为项目定义唯一的位置。 [...] 要查看,Maven坐标由三个组成部分组成:...
<packaging>
类型不是坐标的一部分,例如:
com.example:artifact1:1.0.0:jar
com.example:artifact2:1.0.0:war
成为存储库文件夹和文件:
+- com/example/artifact1/1.0.0
+- artifact1-1.0.0.pom
+- artifact1-1.0.0.jar
+- com/example/artifact2/1.0.0
+- artifact2-1.0.0.pom
+- artifact2-1.0.0.war
当你想要的时候:
com.example:artifactExample:1.0.0:jar
com.example:artifactExample:1.0.0:war
成为:
+- com/example/artifactExample/1.0.0
+- jar
+- artifactExample-1.0.0.pom
+- artifactExample-1.0.0.jar
+- war
+- artifactExample-1.0.0.pom
+- artifactExample-1.0.0.war
除了<packaging>
类型不是坐标的一部分(因此,结果文件夹结构),我们还会看到另一个问题:我们将有两个坐标相同的POM,而坐标是要识别的,即独一无二。