我想获得以下行为:当我为属性" my.prop"指定一个值时,我希望执行依赖项和清理插件。如果没有为该属性指定值,我希望跳过它们。
我创建了" my.prop"像这样:
<properties>
<my.prop></my.prop>
</properties>
然后我读到配置文件激活仅适用于系统属性,所以我删除了上面的内容并使用了surefire插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<systemPropertyVariables>
<my.prop></my.prop>
</systemPropertyVariables>
</configuration>
</plugin>
我尝试使用个人资料,例如:
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<skipDependecyAndCleanPlugins>false</skipDependecyAndCleanPlugins>
</properties>
</profile>
<profile>
<id>skip-dependency-and-clean-plugins</id>
<activation>
<property>
<name>my.prop</name>
<value></value>
<!-- I also tried: <value>null</value> without success.-->
</property>
</activation>
<properties>
<skipDependecyAndCleanPlugins>true</skipDependecyAndCleanPlugins>
</properties>
</profile>
</profiles>
稍后,对于每个插件,我都会这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.9</version>
<configuration>
<skip>${skipDependecyAndCleanPlugins}</skip>
</configuration>
....
</plugin>
但插件仍在执行......
当&#34; my.prop&#34;我怎样才能确定Maven跳过插件的执行?是空/ null?
答案 0 :(得分:3)
最简单的解决方案是使用以下形式的激活:
<profiles>
<profile>
<activation>
<property>
<name>debug</name>
</property>
</activation>
...
</profile>
</profiles>
以上意味着您可以为debug定义任何值,这意味着-Ddebug
就足够了。
空值不能定义为pom文件,因为<value></value>
等同于<value/>
,这意味着与未定义相同。
<强>更新强>
我建议使用个人资料而不是财产。所以你可以简单地在命令行mvn -Pxyz install上定义或保留它。
答案 1 :(得分:0)
您可以在插件的配置中使用my.prop
属性:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.9</version>
<configuration>
<skip>${my.prop}</skip>
</configuration>
....
</plugin>
现在执行:
mvn ... -Dmy.prop=true
然后会跳过插件
答案 2 :(得分:0)
您非常亲密。您可以通过在配置文件激活中使用!my.prop
语法来实现您所描述的内容。
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<skip>${skipDependecyAndCleanPlugins}</skip>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>skip-dependency-and-clean-plugins</id>
<activation>
<property>
<name>!my.prop</name>
</property>
</activation>
<properties>
<skipDependecyAndCleanPlugins>true</skipDependecyAndCleanPlugins>
</properties>
</profile>
</profiles>
根据Maven documentation,如果根本没有定义系统属性skip-dependency-and-clean-plugins
,则my.prop
配置文件将被激活。