如何在maven pom中为缺少的环境变量设置默认值

时间:2016-07-25 14:21:21

标签: maven environment-variables default-value setter

是否可以让maven为缺少的环境变量提供默认值?如果是这样,怎么样?

上下文:

我的属性文件包含环境变量的占位符,如下所示:my.property=${env:ENVIRONMENT_PROPERTY}

运行maven(编辑:不像这个mvn ... -DENVIRONMENT_PROPERTY=some_value)如果在OS中设置了环境变量,则会使用给定值解析属性占位符。但是,如果环境变量不存在,则该值为空。

问题:

我希望环境变量具有默认值。如果环境变量不存在,则应该为其指定一个默认值,该值将在pom或某些属性文件中指定。

重要的:

属性占位符必须指向环境变量。

3 个答案:

答案 0 :(得分:1)

maven资源插件是你的朋友。它应该已经作为构建的一部分运行。但它默认不过滤资源。你必须配置:

  <resource>
     <directory>src/main/resources</directory>
     <filtering>true</filtering>
  </resource>

然后配置过滤器:

<build>
   ...
   <filters>
      <filter>my-filter-values.properties</filter>
   </filters>

将所需的默认值放入该文件中。 鉴于maven中属性的优先级:

(1)命令行(2)settings.xml(3)pom.xml(4)过滤器

过滤器文件中的属性可以作为默认值。

有关过滤器的正确说明,请参阅官方文档:maven-resources-plugin下的过滤器! (它是here

答案 1 :(得分:1)

我使用了felix fileinstall插件( input [type="text"], select{ height:50px; } ) 这允许使用以下符号:

org.apache.felix.fileinstall

这将从ENVIRONMENT_PROPERTY获取值,如果未设置,则采用“默认值”。

编辑:
如果要从maven属性中获取默认值,则需要使用$ {dollar} hack:

${env:ENVIRONMENT_PROPERTY:-default value}

其中${dollar}{env:ENVIRONMENT_PROPERTY:-${default.value}}是一个maven属性,解析为美元符号(dollar),当与<dollar>$</dollar>括号结合使用时会转换为分隔符。

答案 2 :(得分:0)

您可以定义一个具有默认值的属性。

<your_property default-value="Undefined">${env.environent_variable_name}</your_property>

就是这样!
如果您定义 environent_variable_name,则 your_property 将等于它;否则,your_property 将等于 Undefined