Java 根据其他属性的存在设置maven属性

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的属性 我

我有一个maven财产问题,我在文档中找不到。 在命令行中,我将输入From.command的属性。此属性将始终存在

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>