【问题标题】:Netbeans Ant environment variablesNetbeans Ant 环境变量
【发布时间】:2011-12-21 16:17:32
【问题描述】:

我在访问 netbeans build.xml ant 脚本中的环境变量时遇到问题。基本上,当我使用这段代码时:

<target name="-pre-jar">

    <property environment="env"/>

    <echo message="${env.ANT_HOME}"/>
    <echo message="${env.JAVA_HOME}"/>

</target>

我收到如下输出:

compile:
${env.ANT_HOME}
${env.JAVA_HOME}

这是一个问题,因为我需要稍后在脚本中访问这些文件路径。另外,我确信这两个被定义为环境变量。这是我终端的一些证据:

Lukas-Rezeks-MacBook-Pro:ant lukas$ echo $JAVA_HOME - $ANT_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home - /ant

我在 ant 构建脚本变量声明中做错了什么,还是我遗漏了一些明显的东西?对于任何反馈,我们都表示感谢。谢谢。

【问题讨论】:

  • 哦,我的错。 echo 语句位于“-pre-jar”中,因此问题不在于您如何从“编译”中调用它。
  • 不是完全“解决”了,但我确实找到了解决方法。我只是在netbeans中设置了Ant home,所以它自动完成了,而java home实际上是在其他地方导入的。详细模式并没有完全清除任何东西,所以我开始寻找其他方式。感谢您的所有帮助,非常感谢。
  • 好吧,我建议您仔细检查您的系统环境变量。我正在使用 Linux,Linux 和 Mac OS 之间存在很多差异,所以我无法提供更多帮助。

标签: macos netbeans ant environment-variables


【解决方案1】:

你可以放

<property environment="env"/>

在你的目标之外,

或者在你的编译任务中使用“depends=”而不是“antcall”。

我在我的 Linux 上做了以下测试:

<target name="pre-jar">
    <property environment="env"/>
    <echo message="${env.ANT_HOME}"/>
    <echo message="${env.JAVA_HOME}"/>
</target>

<target name="compile">
    <antcall target="pre-jar" />
    <echo message="${env.ANT_HOME}"/>
    <echo message="${env.JAVA_HOME}"/>
</target>

当我运行“ant compile”时,我得到了以下信息:

编译:

预罐:
[回声] /opt/apache-ant-1.8.2
[回声] /opt/jdk1.7.0
[回声] ${env.ANT_HOME}
[回声] ${env.JAVA_HOME}

当我使用depends="pre-jar"时,结果是:

预罐:
[回声] /opt/apache-ant-1.8.2
[回声] /opt/jdk1.7.0

编译:
[回声] /opt/apache-ant-1.8.2
[回声] /opt/jdk1.7.0

当我把任何目标放在外面时,结果是:

编译:

预罐:
[回声] /opt/apache-ant-1.8.2
[回声] /opt/jdk1.7.0
[回声] /opt/apache-ant-1.8.2
[回声] /opt/jdk1.7.0

【讨论】:

  • 没有这样的运气,完全复制了您的代码,但仍然打印出 var 名称...
  • 对于我回答中的示例,尝试使用详细模式运行 ant,例如:“ant -v pre-jar”,然后在此处发布输出。并检查:ant.1045680.n5.nabble.com/…
【解决方案2】:

这在我的 OSX 系统上完全适合我:

[mike@numbersix ~/temp]$ ant -version
Apache Ant(TM) version 1.8.2 compiled on June 3 2011
[mike@numbersix ~/temp]$ echo $JAVA_HOME - $ANT_HOME
/Library/Java/Home - /usr/share/ant
[mike@numbersix ~/temp]$ cat build.xml 
<project name="blah">
    <target name="foo">
        <property environment="env"/>

        <echo message="${env.ANT_HOME}"/>
        <echo message="${env.JAVA_HOME}"/>
    </target>
</project>
[mike@numbersix ~/temp]$ ant foo
Buildfile: /Users/mike/temp/build.xml

foo:
     [echo] /usr/share/ant
     [echo] /Library/Java/Home

BUILD SUCCESSFUL
Total time: 0 seconds

【讨论】:

  • 从 SuperTron 的输出中,他在从另一个名为“compile”的目标调用“pre-jar”时遇到了问题。如果他使用 那么他无法在编译中获得该属性,而“depends”可以工作。
  • 愚蠢的 Netbeans nbbuild.xml 东西。 :P
  • 其实我的回答错了。请参阅我在问题下方的评论......这很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
相关资源
最近更新 更多