我正在尝试在单个 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(使用前将#替换为@)