如果未在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>
请注意
-
activeByDefault
被设置为true,目的是默认启用它。 -
!myproperty
表示该属性丢失或不存在。 - 如果
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>