如何根据maven工件版本将档案上传到不同的文件夹?
How to uploadArchives to different folders depending on the maven artifact version?
我在尝试弄清楚如何将 Maven 工件版本上传到不同的文件夹然后在该文件夹中生成风格 jars/wars/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"
}
}
}
我想知道是否有自定义存储库请求的方法,以便我们可以传递我们需要为每个工件创建的确切文件夹。
或者任何可以真正完成这项工作的东西。
这违背了Maven CoordinatesgroupId:artifactId:version
的理念:
The three elements given above point to a specific version of a project letting Maven know who we are dealing with, ...
Coordinates define a unique location for a project. [...] To review, a Maven Coordinate is made up of three components: ...
<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,而坐标本来是识别,即独一无二。
我在尝试弄清楚如何将 Maven 工件版本上传到不同的文件夹然后在该文件夹中生成风格 jars/wars/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"
}
}
}
我想知道是否有自定义存储库请求的方法,以便我们可以传递我们需要为每个工件创建的确切文件夹。 或者任何可以真正完成这项工作的东西。
这违背了Maven CoordinatesgroupId:artifactId:version
的理念:
The three elements given above point to a specific version of a project letting Maven know who we are dealing with, ...
Coordinates define a unique location for a project. [...] To review, a Maven Coordinate is made up of three components: ...
<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,而坐标本来是识别,即独一无二。