如何触发 maven 构建测试 jar 属性
How to trigger building of tests-jar by maven property
我知道如何通过添加 maven-jar-plugin
来构建测试罐。但这在我的(模块)POM 中需要 14 行代码。
为了节省代码行,我只想在我的模块 POM 中添加一个 Maven-属性 作为开关来决定是否添加测试 jar。 maven-jar-plugin
应该只在父 POM 中定义。
所以我目前的解决方案是:
父 POM 代码:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>${addTestsJar}</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
模块 POM 中的代码:
<properties>
<addTestsJar>test-jar</addTestsJar>
<!-- 'test-jar' or 'jar' -->
</properties>
所以现在 test-jar
将生成测试 jar,jar
将不会构建测试 jar。
这是一个好的解决方案吗?
还是有什么缺点?
PS: 通过配置文件触发 jests-jar 将不起作用,因为配置文件的激活仅由系统属性触发。
你拥有它的方式,如果你使用 'jar' 目标,我认为 Maven 可能 运行 'jar' 两次 - 一次作为默认构建的一部分,另一次用于执行你补充道。您可以 运行 和 -X
并检查执行 ID 以确定。
另一种方法是使用 test-jar
目标的 skip
参数。默认情况下,此 属性 具有 maven.test.skip
属性 的值。我想如果你跳过测试运行s,我的想法是跳过测试jar的创建?我认为这是两种不同的东西;我可能想 运行 测试而不创建 jar。
考虑到这一点,我会将其添加到父 POM 中:
<properties>
<skipTestJar>true</skipTestJar>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>build-test-jar</id>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<skip>${skipTestJar}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
</build>
然后对于我想要测试 jar 的任何模块,我会更改 属性 值:
<properties>
<skipTestJar>false</skipTestJar>
</properties>
或者,您可以通过添加 -DskipTestJar=false
.
在命令行上设置 属性
我知道如何通过添加 maven-jar-plugin
来构建测试罐。但这在我的(模块)POM 中需要 14 行代码。
为了节省代码行,我只想在我的模块 POM 中添加一个 Maven-属性 作为开关来决定是否添加测试 jar。 maven-jar-plugin
应该只在父 POM 中定义。
所以我目前的解决方案是:
父 POM 代码:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>${addTestsJar}</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
模块 POM 中的代码:
<properties>
<addTestsJar>test-jar</addTestsJar>
<!-- 'test-jar' or 'jar' -->
</properties>
所以现在 test-jar
将生成测试 jar,jar
将不会构建测试 jar。
这是一个好的解决方案吗? 还是有什么缺点?
PS: 通过配置文件触发 jests-jar 将不起作用,因为配置文件的激活仅由系统属性触发。
你拥有它的方式,如果你使用 'jar' 目标,我认为 Maven 可能 运行 'jar' 两次 - 一次作为默认构建的一部分,另一次用于执行你补充道。您可以 运行 和 -X
并检查执行 ID 以确定。
另一种方法是使用 test-jar
目标的 skip
参数。默认情况下,此 属性 具有 maven.test.skip
属性 的值。我想如果你跳过测试运行s,我的想法是跳过测试jar的创建?我认为这是两种不同的东西;我可能想 运行 测试而不创建 jar。
考虑到这一点,我会将其添加到父 POM 中:
<properties>
<skipTestJar>true</skipTestJar>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>build-test-jar</id>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<skip>${skipTestJar}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
</build>
然后对于我想要测试 jar 的任何模块,我会更改 属性 值:
<properties>
<skipTestJar>false</skipTestJar>
</properties>
或者,您可以通过添加 -DskipTestJar=false
.