【问题标题】:Basedir issue in Ant codeAnt 代码中的 Basedir 问题
【发布时间】:2013-05-10 20:47:54
【问题描述】:

我正在使用 Apache Ant 做一些项目,我的项目布局如下:

project/build.xml
project/properties/build.properties
project/tool/antcontrib.jar 

在这里,当我运行 ant 命令时它工作正常,我的基本目录是 basedir="."

现在,我希望我的项目布局如下:

project/folder/build.xml
project/properties/build.properties
project/tool/antcontrib.jar 

现在,我将基本目录更改为 basedir=".."。我认为它可能会起作用。 但它仍然无法正常工作。 所以我不知道我们必须为'../'设置我们的basedir 这是我的 build.xml 文件中定义的与 taskdef 相关的代码块。

<taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${tool.ant.contrib}"/>
        </classpath>
    </taskdef>

注意:我知道 build.xml 和属性文件应该在同一个文件夹中,这是标准做法。但我不想跟着那个..任何人都可以在这里帮助我...

【问题讨论】:

  • 您是否收到有关特定任务的错误消息?如果是这样,您可以发布构建文件的那部分吗?
  • 我确信如果 basedir 路径设置正确,一切都会正常工作。但问题是../不在 basedir 中工作。你能告诉我是否使用 .. 而不是 ../ 是否正确!
  • “它不适合我”是什么意思,错误是什么?如何从哪个工作目录调用ant?
  • 错误是 net/sf/antcontrib/antcontrib.properties 未找到。我正在使用 antcontrib.jar 文件。谢谢你的帮助。它现在工作。我在我的道路上做了一些改变。我在 basedir 路径中做了 ../../。
  • 在 basedir 中设置“..”是有效的。你必须告诉我们你的错误是什么。

标签: ant


【解决方案1】:

为了工作,tool.ant.contrib 属性应该是相对路径,而不是绝对路径。

例如,这个构建工作:

<project basedir="..">
    <property name="tool.ant.contrib" location="tool/antcontrib.jar" />
    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${tool.ant.contrib}"/>
        </classpath>
    </taskdef>
    <if><isset property="tool.ant.contrib" />
        <then><echo message="OK" /></then>
    </if>
</project>

【讨论】:

  • 我的位置已经包含相对路径,而不是属性位置中 tool.ant.contrib 的绝对值
  • 正如其他 cmets 中所问的那样,缺少一些东西来解决您的难题。分享您的错误以及您设置该属性“tool.ant.contrib”的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多