如何根据maven工件版本将档案上传到不同的文件夹?

How to uploadArchives to different folders depending on the maven artifact version?

我在尝试弄清楚如何将 Maven 工件版本上传到不同的文件夹然后在该文件夹中生成风格 jars/wars/aars 时遇到了一些问题。

例如,我得到了version 1.0.0groupId 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,而坐标本来是识别,即独一无二。