Java 根据其他属性的存在设置maven属性
我有一个maven财产问题,我在文档中找不到。 在命令行中,我将输入From.command的属性。此属性将始终存在Java 根据其他属性的存在设置maven属性,java,maven,pom.xml,Java,Maven,Pom.xml,我有一个maven财产问题,我在文档中找不到。 在命令行中,我将输入From.command的属性。此属性将始终存在 mvn deploy -Dfrom.command=COMMANDVALUE 在pom.xml中,我将指定另一个属性: <properties> <from.pom>POMVALUE</from.pom> </properties> 这个财产有时会在那里,有时会丢失 我想要第三个名为used.value的属性 我
mvn deploy -Dfrom.command=COMMANDVALUE
在pom.xml中,我将指定另一个属性:
<properties>
<from.pom>POMVALUE</from.pom>
</properties>
这个财产有时会在那里,有时会丢失
我想要第三个名为used.value的属性
我希望used.value设置为from.pom的值(如果该属性存在),否则应设置为from.command的值
这需要ARRIES,因为我需要从另一个脚本运行maven构建,我不希望脚本必须检查所有pom文件
这可能吗?你可以用魔咒
这个目标使我们能够编写脚本。它自动将变量project定义为实际的Maven项目,将会话定义为正在执行的Maven会话
上面的脚本从Maven项目的属性中获取from.pom属性,并默认为命令行上设置的from.command属性。它将其设置为used.value变量,然后在执行脚本后,插件将其导出为Maven属性。命令行属性通过以下方式从Maven会话中检索:
用户属性由用户自行直接配置,例如通过命令行上的-Dkey=value参数
此目标自动绑定到验证阶段,这是默认生命周期中运行的第一个阶段,因此您可以在构建的其余部分中使用${used.value}作为属性。您可以使用mojo
这个目标使我们能够编写脚本。它自动将变量project定义为实际的Maven项目,将会话定义为正在执行的Maven会话
上面的脚本从Maven项目的属性中获取from.pom属性,并默认为命令行上设置的from.command属性。它将其设置为used.value变量,然后在执行脚本后,插件将其导出为Maven属性。命令行属性通过以下方式从Maven会话中检索:
用户属性由用户自行直接配置,例如通过命令行上的-Dkey=value参数
此目标自动绑定到验证阶段,这是默认生命周期中运行的第一个阶段,因此您将能够使用${used.value}作为构建的其余部分中的属性。这看起来是个不错的答案,但我的解决方案必须与windows和Linux@Robert3452这是独立于系统的,无论在Linux还是Windows上都可以运行。我假设如果我在验证阶段已经有了另一个执行,我可以在它之前运行这个somehow@Robert3452对您可以通过将其放置在POM之前来运行它。对于给定的阶段,Maven按照插件在POM中的定义顺序执行插件。这看起来是个不错的答案,但我的解决方案必须与windows和Linux@Robert3452这是独立于系统的,无论在Linux还是Windows上都可以运行。我假设如果我在验证阶段已经有了另一个执行,我可以在它之前运行这个somehow@Robert3452是的,您可以通过将其放置在POM之前来运行它。对于给定的阶段,Maven按照插件在POM中的定义顺序执行插件。
<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>