Ant忽略尝试覆盖LANG环境变量

时间:2010-05-20 10:16:15

标签: java ant environment-variables locale

我们需要测试使用设置为不同值的语言的java构建。我可以手动(即通过export LANG=en_DK.UTF-8export LANG=en_DK)测试使用ant build脚本运行的单元测试的行为有所不同,但我需要从ant设置环境变量。我尝试使用这些方法设置它(将shell $LANG设置为en_DK.UTF-8):

  1. 在命令行中使用-Dant -DLANG=en_DK
  2. 使用其中包含build.properties行的LANG=en_DK文件
  3. 在build.xml文件中使用以下语句(抱歉格式化,否则我无法显示它):
  4. <property environment="ANTENV"/>
    <property name="ANTENV.LANG" value="en_DK"/>
    

    使用三种可能性中的任何一种,当使用-debug运行时,ant会报告:

    Override ignored for property "LANG"
    

    如何在ant中设置LANG环境变量?

2 个答案:

答案 0 :(得分:1)

ANT Properties are immutable

<property name="ANTENV.LANG" value="en_DK"/>

可能被ant解释为在LANGANTENV)中存储所有环境变量时覆盖已存在的<property environment="ANTENV"/>值的尝试。

因此,您需要存储以将该值存储在单独的属性中。

<property name="MY.LANG" value="${env.LANG}" />

答案 1 :(得分:0)

假设您通过调用<java>完成了“测试java构建”,您可以使用fork-flag并将属性传递给新创建的进程。以下是Ant documentation

的示例
  <java classname="test.Main"
        fork="yes" >
    <sysproperty key="DEBUG" value="true"/>
    <arg value="-h"/>
    <jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>
  </java>