我想否定pom.xml中定义的布尔属性.
意思是,给定一个属性${doSomething}我需要传递<skip>给一个插件,其中值<skip>应该是否定的${doSomething}.
如果${doSomething}是假,那么我想跳过.如果是真的,那么我不想跳过.有任何想法吗?
澄清:我不是在谈论使用否定属性进行配置文件激活.我只是想将布尔值的否定传递给插件.
Tun*_*aki 14
除了配置文件激活,Maven没有实现布尔逻辑.因此,如果想要否定属性将其传递给插件,则需要自己完成.它有点笨拙,但您可以使用build-helper-maven-plugin:bsh-property目标,它可以编写BeanShell脚本并将其中定义的变量导出为Maven属性:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>negate-prop</id>
<phase>initialize</phase>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<source>dontDoSomething = !${doSomething};</source>
<properties>
<property>dontDoSomething</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
您不能覆盖该属性,但您可以定义一个包含否定结果的新属性; 在上面的例子中,它是dontDoSomething.这是在initialize阶段中运行,以便其余插件可以将其用作标准参数${dontDoSomething}.
这可以增强为具有dontDoSomethingif doSomething不存在的默认值.
<source>
value = project.getProperties().getProperty("doSomething");
dontDoSomething = value == null ? false : !Boolean.parseBoolean(value);
</source>
Run Code Online (Sandbox Code Playgroud)
BeanShell是一种脚本语言,看起来非常像Java,您可以使用现有的Java方法.在上面,"doSomething"从项目的属性中检索属性(project在评估时由插件注入当前的Maven项目); 它没有定义,我们返回false,否则,我们否定价值.
如果doSomething特别是系统属性,也可以(ab)使用配置文件激活功能并具有2个配置文件:一个由属性激活true并将另一个设置为false,以及第二个配置文件执行相反:
<profiles>
<profile>
<id>pro-1</id>
<activation>
<property>
<name>doSomething</name>
<value>!false</value>
</property>
</activation>
<properties>
<dontDoSomething>false</dontDoSomething>
</properties>
</profile>
<profile>
<id>pro-2</id>
<activation>
<property>
<name>doSomething</name>
<value>false</value>
</property>
</activation>
<properties>
<dontDoSomething>true</dontDoSomething>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
例如,如果doSomething在<properties>标记中设置了Maven属性,则无效.它需要作为系统属性传递mvn -DdoSomething=true|false.将根据系统属性的值激活相应的配置文件,该属性将dontDoSomething属性定义为其反转.如果未定义属性,pro-1则将处于活动状态,设置dontDoSomething为默认值false.所有这一切都很难看,但......
| 归档时间: |
|
| 查看次数: |
4686 次 |
| 最近记录: |