【问题标题】:Jenkins Artifactory plugin: Is there a way to specify a replacement POM?Jenkins Artifactory 插件:有没有办法指定替换 POM?
【发布时间】:2021-05-13 09:45:59
【问题描述】:

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

我有一个 Maven 构建,其中包含一个父模块和一些构建 JAR 的子模块。各个 POM 都经过大量参数化,因此我可以从 Jenkins 传入 project.version 并将其传递到子模块中,但是当拉取 JAR 以用作依赖项时,参数化的 POM 文件不起作用,因为 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 插件中的部署目标定义类似的东西。有吗?

【问题讨论】:

    标签: jenkins-plugins artifactory


    【解决方案1】:

    您是否尝试过结合 maven 插件来看看这是否可行?

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

    即maven exec 插件:

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

    然后使用带有 pom.xml 的工件 jenkins 插件

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

    【讨论】:

    • 谢谢!尽管我经历了一些配置文件扭曲以使其在 Windows 桌面和 Linux 上的 Jenkins 上都可以工作,但它确实有效!我跳过了最后一个构建后的部分,因为在 Jenkins 中,这严格来说是一个发布版本,每次都在新的工作区中运行。
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 2019-09-14
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多