Jenkins Artifactory 插件:有没有办法指定替换 POM?

Jenkins Artifactory plugin: Is there a way to specify a replacement POM?

简短形式:在使用 Artifactory jenkins 插件部署 Maven 项目时,有没有办法告诉它为每个模块部署其各自的 ./target/pom.xml 而不是模块的原始 pom.xml?

我有一个 Maven 构建,其中包含构建 JAR 的父模块和一些子模块。各自的 POM 被大量参数化,因此我可以从 Jenkins 传递 project.version 并将其传递到子模块中,但是参数化的 POM 文件在提取 JAR 以用作依赖项时不起作用,因为 Maven 可以' 由于参数化而解析父项(<parent><version>${revision}</version></parent> 严重失败)。我能够使用每个模块中的资源插件在 ./target 中创建 POM 的过滤版本,所有参数都已解析,并且在我可以使用的每个子 POM 的 maven-install-plugin 中

<executions>
    <execution>
        <phase>install</phase>
        <goals>
                <goal>install-file</goal>
        </goals>
        <configuration>
                <file>./target/${project.artifactId}-${revision}.jar</file>
                <pomFile>./target/pom.xml</pomFile>
        </configuration>
    </execution>
</executions>

它将我想要的安装到本地仓库。但是,我看不到一种方法可以在 Jenkins 插件中为部署目标定义类似的东西。有吗?

您是否尝试过组合 maven 插件以查看是否可行?

运行 生成填充的构建 ./target/pom.xml

即Maven exec 插件到:

  1. 将pom.xml复制到pom.xml.org
  2. 将 ./target/pom.xml 移动到 ./pom.xml

然后使用 artifactory jenkins 插件并填写 pom.xml

然后在您的 post-构建步骤中将 ./pom.xml.org 移回 ./pom.xml 以消除污染。