gpt4 book ai didi

java - 在不破坏东西的情况下将项目添加到 Ant 的路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:38 27 4
gpt4 key购买 nike

ant , 我怎样才能添加到 PATH不破坏 /usr/bin 中的内容?我直接从 Apache ant 文档开始工作以应用到 PATH https://ant.apache.org/manual/Tasks/exec.html (示例部分)。

文档引用searchpath描述如下:

searchpath: When this attribute is true, then system path environment variables will be searched when resolving the location of the executable. since Ant 1.6.3

... 但是 searchpath似乎也无助于解决这个特定问题。

以下面的例子为例build.xml :

<project name="Sample" default="init" basedir=".">
<description>Testing PATH with exec</description>
<target name="init">
<exec executable="./test.sh">
<env key="PATH" value="${env.PATH}:/foo"/>
</exec>
</target>
</project>

和下面的shell脚本test.sh :

#!/bin/bash
echo "Hello!" # This works
uname # If PATH is edited, shows "uname: command not found"

输出:

init:
[exec] Hello!
[exec] ./test.sh: line 3: uname: command not found
[exec] Result: 127

... 但是如果我注释掉 <env key="PATH" value="${env.PATH}:/foo"/>它工作正常。你如何添加到PATH不破坏东西?

我正在 MacOS 10.14.5“Mojave”上使用 AdoptOpenJDK 11.0.3 和 Apache Ant 1.10.6 进行测试。

最佳答案

找到了.. Apache Ant 文档假定您在代码中的某处调用了以下内容:

<property environment="env"/>

如果没有这个,PATH 将被设置为文字字符串 ${env.PATH},从而破坏 PATH 值。这可以通过在 shell 脚本中回显 $PATH 的值来观察。

他们的文档在示例中有这个,但在上面的示例中遗漏了导致问题。

<project name="Sample" default="init" basedir=".">
<description>Testing PATH with exec</description>
<target name="init">
<property environment="env"/><!-- THIS WAS MISSING -->
<exec executable="./test.sh">
<env key="PATH" value="${env.PATH}:/foo"/>
</exec>
</target>
</project>

关于java - 在不破坏东西的情况下将项目添加到 Ant 的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com