如何在maven pom中为缺少的环境变量设置默认值
How to set default values for missing environment variables in maven pom
是否可以让 maven 为缺少的环境变量提供默认值?如果可以,怎么做?
上下文:
我有带有环境变量占位符的属性文件,如下所示:my.property=${env:ENVIRONMENT_PROPERTY}
运行 maven(编辑:不像这样mvn ... -DENVIRONMENT_PROPERTY=some_value
)如果在OS中设置了环境变量,则它会使用给定值解析属性占位符.但是如果环境变量不存在,则值为空。
问题:
我希望环境变量有默认值。如果环境变量不存在,则应为其指定一个默认值,该值将在 pom 或某些属性文件或其他文件中指定。
重要:
属性 占位符必须指向一个 environment 变量。
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)
我使用了 felix fileinstall 插件 (org.apache.felix.fileinstall
)
这允许使用以下符号:
${env:ENVIRONMENT_PROPERTY:-default value}
这将从 ENVIRONMENT_PROPERTY 中获取值,如果未设置,则需要 "default value"。
编辑:
如果你想从 maven 属性中获取默认值,你需要使用 ${dollar} hack:
${dollar}{env:ENVIRONMENT_PROPERTY:-${default.value}}
其中 dollar
是一个解析为美元符号 (<dollar>$</dollar>
) 的 Maven 属性,当与 {
括号组合时,它变成一个定界符。
您可以使用默认值定义 属性。
<your_property default-value="Undefined">${env.environent_variable_name}</your_property>
就是这样!
如果你定义 environent_variable_name
那么 your_property
将等于它;否则,your_property
将等于 Undefined
。
是否可以让 maven 为缺少的环境变量提供默认值?如果可以,怎么做?
上下文:
我有带有环境变量占位符的属性文件,如下所示:my.property=${env:ENVIRONMENT_PROPERTY}
运行 maven(编辑:不像这样mvn ... -DENVIRONMENT_PROPERTY=some_value
)如果在OS中设置了环境变量,则它会使用给定值解析属性占位符.但是如果环境变量不存在,则值为空。
问题:
我希望环境变量有默认值。如果环境变量不存在,则应为其指定一个默认值,该值将在 pom 或某些属性文件或其他文件中指定。
重要:
属性 占位符必须指向一个 environment 变量。
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)
我使用了 felix fileinstall 插件 (org.apache.felix.fileinstall
)
这允许使用以下符号:
${env:ENVIRONMENT_PROPERTY:-default value}
这将从 ENVIRONMENT_PROPERTY 中获取值,如果未设置,则需要 "default value"。
编辑:
如果你想从 maven 属性中获取默认值,你需要使用 ${dollar} hack:
${dollar}{env:ENVIRONMENT_PROPERTY:-${default.value}}
其中 dollar
是一个解析为美元符号 (<dollar>$</dollar>
) 的 Maven 属性,当与 {
括号组合时,它变成一个定界符。
您可以使用默认值定义 属性。
<your_property default-value="Undefined">${env.environent_variable_name}</your_property>
就是这样!
如果你定义 environent_variable_name
那么 your_property
将等于它;否则,your_property
将等于 Undefined
。