【发布时间】:2016-09-01 08:18:39
【问题描述】:
这可能是一个微不足道的问题,但我对 Ant 中环境的使用感到困惑。我想更新一个我知道在 Jenkins 上可以正常工作的目标,并且我需要在推送到 prod 之前在本地测试我的更改。然而,即使我写了一个微不足道的目标,Ant 似乎也不想读取我的环境变量:
<target name="test">
<property environment="env" />
<echo>
${env.user.country}
${env.user.language}
${env.TARGET}
</echo>
</target>
打印出来的
Buildfile: /home/local/ANT/.../Workplace/dra/draModelsConfig/build.xml
test:
[echo]
[echo] ${env.user.country}
[echo] ${env.user.language}
[echo] ${env.TARGET}
[echo]
BUILD SUCCESSFUL Total time: 0 seconds
我将目标准确地称为 Jenkins 主机在构建日志中记录它的方式(对此问题进行了简化):
ant -file build.xml -DTARGET=build test
为什么env 不包含应有的环境变量?
【问题讨论】:
-
@Andrei_N 没有帮助,看看我的代码,它已经包含了
property任务 -
由于没有设置变量,可能会以这种方式打印
-
是的,但问题是为什么?例如,我认为
-DTARGET会将其设置在环境中。至于其他属性,都是在我的操作系统环境中设置的 -
您将普通属性(如访问权限)与环境混合在一起。 user.country 和 user.language 在 Java 进程中可用。所以你可以在没有 env 前缀的情况下访问它们。说... ${user.country}
标签: java jenkins ant environment-variables