有没有一种优雅的方法来确定房产的价值? 例如,我想允许从文件中读取属性,但也要从环境变量中获取属性。如果存在环境变量,我希望将其优先于文件的值。
这是我拥有的(使用示例属性id
):
deploy.destination
然而,它相当笨重(特别是对于更多的财产)。
我有办法做这样的事吗?
<property environment="env" />
<if>
<isset property="env.DEPLOY_DEST" />
<then>
<property name="deploy.destination" refid="env.DEPLOY_DEST"/>
</then>
</if>
<property file="build.properties"/>
使用此示例,如果未设置<property environment="env" />
<property name="deploy.destination" refid="env.DEPLOY_DEST"/>
<property file="build.properties"/>
,则会失败。
谢谢!
答案 0 :(得分:2)
鉴于你的陈述:
如果存在环境变量,我希望将其优先于文件的值。
你可以做到
<property environment="env" />
<if>
<available file="custom.properties"/>
<then>
<property file="custom.properties" override="false"/>
</then>
</if>
密钥应为 override =&#34; false&#34; 以允许env属性值保留。
答案 1 :(得分:0)
环境变量广泛用于CI / CD平台,如果是这种情况,可能以下内容将非常有用。
首先,我向您展示我的构建文件 build.xml :
<project name="Demo" default="deployment">
<target name="deployment">
<property file="build.properties.ini"/>
<echo message="Your host is: ${destination}"/>
</target>
</project>
我的属性文件 build.properties.ini :
destination = localhost
如果我们在构建文件$ phing deployment
中执行唯一目标,则输出将是预期的:
$ phing deployment
[echo] Your host is: localhost
现在执行以下$ phing deployment -Ddestination=example.com
,输出为:
$ phing deployment -Ddestination=example.com
[echo] Your host is: example.com
正如您所见,我的构建文件和属性文件保持不变。但是我有能力更改destination
属性的值,这是因为当属性设置为命令行参数时,它们的优先级高于属性文件中声明的属性
总结:
// Use the following in development
$ phing deployment
// And override "destination" in your CI/CD config
$ phing deployment -Ddestination=$DEPLOY_DEST
来源:https://www.phing.info/phing/guide/en/output/chunkhtml/ch04s03.html