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

neX*_*Xus 1 setter environment-variables default-value maven

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


语境:

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

mvn ... -DENVIRONMENT_PROPERTY=some_value如果在操作系统中设置了环境变量,则运行 maven (编辑:不是这样)会使其解析具有给定值的属性占位符。但如果环境变量不存在,则该值为空。

问题:

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

重要的:

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

小智 10

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

<your_property default-value="Undefined">${env.environent_variable_name}</your_property>
Run Code Online (Sandbox Code Playgroud)

就是这样!
如果你定义了environent_variable_namethenyour_property将等于它;否则,your_property将等于Undefined


neX*_*Xus 5

我使用了 felix fileinstall 插件 ( org.apache.felix.fileinstall) 这允许使用以下符号:

${env:ENVIRONMENT_PROPERTY:-default value}

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


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

${dollar}{env:ENVIRONMENT_PROPERTY:-${default.value}}

其中dollar是解析为美元符号 ( <dollar>$</dollar>) 的 Maven 属性,与括号组合时会变成分隔符{