如果未在maven中设置资源过滤的环境variables,如何使用默认值?

我正在使用资源过滤来replace属性文件中的$ {values}。

例如该文件包含PROPERTY = $ {VALUE}

我希望$ {VALUE}被replace为环境variables$ VALUE,如果运行构build时设置了$ VALUE,那么效果很好。 真棒。

然而,这些环境只能在我们的官方构build环境(由Jenkins设置)中设置,而不是在开发人员构build中,所以$ {values}在过滤之后会保留在属性文件中,这会破坏内容。 我宁愿不要在开发人员环境中使用env vars,因为这总会导致易碎的开发版本和whiny开发人员。

如果env var没有设置,我如何使用环境variables值,如果它设置并使用另一个默认的属性值?

从我的testing中可以看出,默认情况下,pom中设置的属性会覆盖环境variables以达到资源过滤的目的。

谢谢

我正在使用configuration文件来确定

<profiles> <profile> <activation> <activeByDefault>true</activeByDefault> <property> <name>!myproperty</name> </property> </activation> ... <properties> <myproperty>some value</myproperty> </properties> </profile> ... </profiles> 

请注意

  1. activeByDefault被设置为true,目的是默认启用它。
  2. !myproperty表示该属性丢失或不存在。
  3. 如果myproperty不存在,只需使用properties定义的myproperty来代替。

你可以在http://maven.apache.org/guides/introduction/introduction-to-profiles.html上看到更多的信息。;

我希望这可能有助于达到您的要求。

问候,

Charlee Ch。

在使用环境值表示文件系统path时,在我们的开发组中有同样的问题 – 特别是Linux和Windows之间的差异。

基于同一问题上的另一个解决scheme:

 <profile> <id>MY_VAR default value</id> <activation> <property> <name>!env.MY_VAR</name> </property> </activation> <properties> <env.MY_VAR>default value</env.MY_VAR> </properties> </profile>