我的属性文件包含环境变量的占位符,如下所示:my.property=${env:ENVIRONMENT_PROPERTY}
运行maven(编辑:不像这个mvn ... -DENVIRONMENT_PROPERTY=some_value
)如果在OS中设置了环境变量,则会使用给定值解析属性占位符。但是,如果环境变量不存在,则该值为空。
我希望环境变量具有默认值。如果环境变量不存在,则应该为其指定一个默认值,该值将在pom或某些属性文件中指定。
属性占位符必须指向环境变量。
答案 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
。