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

我正在尝试在单个 Jenkins 作业中构建多个 Maven 配置文件。每个配置文件都会更改一些代码,然后通过在命令行中执行 mvn -Pdev install 然后 mvn -Pprod install 创建一个 jar(根据 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 任务构建这两个配置文件?把这两个 jar 都放进神器里?我对 Jenkins 知之甚少,网上也没有太多关于这方面的信息。

最佳答案

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

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

这样您的作业将运行两次,同时使用两个值。

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

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

https://stackoverflow.com/questions/18152831/

相关文章:

ant - 使用 Ant 解压 tgz 文件

testing - Cabal 输出被重定向但未生成

c# - 在 Visual Studio 2010 中使用目标构建时收到大量警告

build - 一旦发生错误,是否可以加速 crosstool-ng 构建?

java - maven-dependency-plugin 是否使用其他类型的工件解析而不是 ma

java - 使用gradle编译时如何在intellij中包含构建目录作为源目录

build - 如何修改 Jenkins 用于控制从站的负载平衡行为?

linux - 在 Linux 上构建 VTK 时出现错误 "GLintptr has not be

android - 升级到android后无法构建项目-P

visual-studio-2010 - Visual Studio 2010 中构建的输出路径