为单个 Jenkins 作业构建多个 Maven 配置文件

2023-11-22

我正在尝试在单个 Jenkins 作业中构建多个 Maven 配置文件。每个配置文件都会更改一些代码,然后通过执行创建一个 jarmvn -Pdev install then mvn -Pprod install在命令行中(根据 Maven 使用mvn -Pdev,prod install应该有效,但它对我不起作用)。这是我的项目中的两个配置文件pom.xml:

<profiles>   
 <!-- prod profile -->
   <profile>
    <id>prod</id>
     <build>
      <plugins> 

          <plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <version>1.5.2</version>

                <executions>
                    <execution>                    
                        <phase>process-resources</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>

                         <file>src/main/java/com/IQzone/android/configuration/AbstractHoldingRefreshable.java</file>
                    <replacements>
                        <replacement>
                            <token>TrUe</token>
                            <value>TOAST_SWITCH</value>
                        </replacement>
                    </replacements>

                </configuration>

            </plugin>

         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>jar</goal>
               </goals>
               <configuration>
                 <classifier>prod</classifier>
               </configuration>
             </execution>
           </executions>
         </plugin>
       </plugins>
     </build>
   </profile>


 <!-- dev profile -->
   <profile>
     <id>dev</id>
     <build>
        <plugins>

            <plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <version>1.5.2</version>

                <executions>
                    <execution>                    
                        <phase>process-resources</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>

                    <file>src/main/java/com/IQzone/android/configuration/AbstractHoldingRefreshable.java</file>
                    <replacements>
                        <replacement>
                            <token>TOAST_SWITCH</token>
                            <value>TrUe</value>
                        </replacement>
                    </replacements>

                </configuration>

            </plugin>

            <!-- build project with JAVA 1.6 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>


         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <configuration>
             <skip>true</skip>
           </configuration>
         </plugin>
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>jar</goal>
               </goals>
               <configuration>
                 <classifier>dev</classifier>
               </configuration>
             </execution>
           </executions>
         </plugin>



       </plugins>
     </build>
   </profile>
 </profiles>

我如何设置 Jenkins 以便在构建单个 Jenkins 作业时自动构建这两个配置文件?然后把这两个罐子都放进Artifactory?我对詹金斯的了解很少,网上也没有太多这方面的信息。


您可以创建一个 Jenkins 矩阵作业。矩阵作业允许相同的作业在更改设置(在您的情况下:字符串)的情况下运行。

每个变化的设置称为一个轴。在您的情况下,您将创建一个包含两个值的字符串轴:dev 和 prod。

这样你的工作就会运行两次,并具有两个值。

但是:您使用配置文件是危险的。由于用于运行构建的配置文件未编入您的工件中,因此您违反了 Maven 的“一个源版本应始终导致完全相同的目标工件”合同(请参阅:http://www.blackbuild.com/how-to-really-use-maven-profiles-without-endangering-your-karma/以获得更详细的解释)

考虑使用分类器(-dev 和 -prod)创建两个不同的工件,甚至更好:为构建创建两个单独的模块,每个模块仅创建一个目标工件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为单个 Jenkins 作业构建多个 Maven 配置文件 的相关文章

随机推荐

  • Travis-CI Android SDK 许可问题

    我正在尝试使用 Travis 构建我的 Android 项目 目前我收到错误 A problem occurred configuring project app gt You have not accepted the license a
  • 如何使用模型优先方法使用动态连接字符串,但仍使用 EDMX 中的数据模型?

    我使用 EF 5 和模型优先方法创建了 EDMX 即我从空白设计器开始并对我的实体进行建模 现在我希望能够使用 EDMX 中定义的模型 但提供运行时 SQL Server 连接字符串 而无需修改配置文件 我知道如何将连接字符串传递到 DbC
  • Javascript 从一组 URL 派生出一棵树

    伙计们正在尝试创建一个动态菜单列表 用户可以创建的元素的深度没有限制 我的问题 我的 URL 集如下所示 var json data title Food path root title Cloths path root title Veg
  • Django 说 - 没有名为“博客”的模块

    我正进入 状态 ModuleNotFoundError No module named blog 将我的博客应用程序添加到 INSTALLED APPS 部分时出错settings py 我确定这与我在 INSTALLED APPS 下添加
  • scala.util.Try 相对于 try..catch 有何优势?

    在线搜索答案给出了两个突出的帖子 Codacy s and 丹尼尔 韦斯特海德 并且都给出相同的答案Scala 的 Try 官方文档 上面示例中显示的 Try 的一个重要属性是它能够管道或链接操作 并在此过程中捕获异常 上面引用的例子是 i
  • dd() 函数中 b"string" 是什么意思?

    dd result Result description keywords b keywords字符串前面有字母 b 描述中没有这个 b 是什么意思 如果可能的话 我该如何转换字符串 顺便说一句 这是我 var dump 关键字的结果 st
  • Python Pandas read_sql_query“'NoneType'对象不可迭代”错误

    我正在尝试执行 sql 并将结果保存到 Panda Dataframe 中 这是我的代码 dbserver validserver filename myquery sql database validdb conn pyodbc conn
  • Google 一键项目状态

    有谁知道 Google One tap AKA YOLO 项目的状况如何 似乎所有的官方文档一键消失了 缓存版本指出 该 API 的 Beta 测试计划目前已结束 我们正在改进 API 的跨浏览器功能 并将在未来几个月内提供更新 有相当多的
  • 在 Java 9 中找不到模块 javafx.controls

    我在两个文件中有两个 JPMS 模块 modulea jar and moduleb jar 模块a要求javafx controls模块 我需要在新层中使用这些模块 所以我这样做 ModuleFinder finder ModuleFin
  • 使用 AngularJS 和 Pattern/RegEx 验证

    我有一个数字类型的输入 我想确保它只接受数字 我可以在服务器端很好地做到这一点 但使用 AngularJS 我无法让它工作 这是代码
  • java类存储在Oracle中的哪里?

    加载的 Java 类的 Java 字节码存储在 Oracle 数据库中的哪里 具体来说 是否有一个视图或表可以用来获取 Oracle 中 java 类模式对象的原始字节 如果您已使用 CREATE JAVA SOURCE 命令将 Java
  • ShareKit 发生变化?

    我没有太多使用 ShareKit 但我只想拥有三个共享选项 Facebook Twitter 和电子邮件 ShareKit 提供了更多选项 包括 更多 按钮 但是 我不需要 更多 选项 只需要三个选项 In SHKActionSheet m
  • 删除带有嵌套因素的条形图中每个面板未使用的因素

    前段时间我问了一个问题如何删除条形图中未使用的因素 感谢 Aaron 我为这个问题找到了一个有用的解决方案 现在 我面临着一个非常相似的问题 但我过去使用的解决方案不适用于这种情况 这是重现我正在使用的数据框的代码 set seed 17
  • 如何编写接受管道输入的 PowerShell 脚本?

    我正在尝试编写一个可以获取管道输入的PowerShell脚本 并且预计会这样做 但尝试类似 ForEach Object do something 从命令行使用脚本时实际上不起作用 如下所示 1 20 test ps1 有办法吗 注意 我了
  • 替换2个字符串之间的所有文本python

    可以说我有 a r Example This is a very annoying string that takes up multiple lines and h s a kind s of stupid symbols in it o
  • django 的模型 get_or_create 方法不应该包装在事务中吗?

    我正在浏览 django 的源代码并查看获取或创建 难道不应该用交易来包装吗 Thanks 看着这个差异看起来像修订8315 已在get or create 方法 Update 正如 reshefm 指出的 这个问题已在rev 8670 w
  • wordpress URL 以数字结尾

    我不确定这是否是一个已知问题或应该像这样的表现 任何 WordPress 网站 如果您在 URL 末尾添加数字 例如 http perishablepress com wordpress multisite mamp 我们在末尾添加 1 或
  • 如何在 python 中使用reportlab、rtl 和 bidi 创建包含波斯语(波斯语)文本的 PDF

    我一直在尝试使用英语 波斯语 数字或它们的组合的内容创建 PDF 文件 波斯语文本存在一些问题 例如 1 文字必须从右向左书写 2 单词中不同位置的字符之间存在差异 意味着字符根据周围的字符改变形状 3 因为句子是从右向左阅读的 所以普通的
  • 如何使用 ggplot 绘制 T-SNE 聚类图

    以下是使用 IRIS 数据的 t SNE 代码 library Rtsne iris unique lt unique iris Remove duplicates iris matrix lt as matrix iris unique
  • 为单个 Jenkins 作业构建多个 Maven 配置文件

    我正在尝试在单个 Jenkins 作业中构建多个 Maven 配置文件 每个配置文件都会更改一些代码 然后通过执行创建一个 jarmvn Pdev install then mvn Pprod install在命令行中 根据 Maven 使