我有一个我无法在文档中提到的maven属性问题。 从命令行我将输入属性" from.command"。此属性将始终存在。
mvn deploy -Dfrom.command=COMMANDVALUE
在pom.xml中我将指定另一个属性:
<properties>
<from.pom>POMVALUE</from.pom>
</properties>
此属性有时会在那里,有时则会丢失。
我想要一个名为used.value
的第三个属性我想将used.value设置为&#34; from.pom&#34;的值如果该属性存在,否则应将其设置为&#34; from.command&#34;
的值这需要因为我需要从另一个脚本运行maven构建而我不希望脚本必须检查所有pom文件。
这可能吗?
答案 0 :(得分:5)
您可以使用build-helper-maven-plugin:bsh-property
mojo。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>bsh-property</id>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<properties>
<property>used.value</property>
</properties>
<source>
used.value = project.getProperties().getProperty("from.pom", session.getUserProperties().getProperty("from.command"));
</source>
</configuration>
</execution>
</executions>
</plugin>
此目标可以编写BeanShell脚本。它自动将变量project
定义为实际的Maven项目,并将session
定义为正在执行的Maven会话。
上面的脚本从Maven项目的属性中获取属性"from.pom"
,默认为命令行上设置的"from.command"
属性。它将它设置为used.value
变量,然后在执行脚本后由插件将其导出为Maven属性。使用getUserProperties()
:
用户已根据自己的判断直接配置用户属性,例如通过命令行上的
-Dkey=value
参数。
此目标自动绑定到validate
阶段,这是在默认生命周期中运行的第一阶段,因此您将能够在其余部分中使用${used.value}
作为属性