Ant代码中的基于问题

Ash*_*gde 7 ant

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

project/build.xml
project/properties/build.properties
project/tool/antcontrib.jar 
Run Code Online (Sandbox Code Playgroud)

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

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

project/folder/build.xml
project/properties/build.properties
project/tool/antcontrib.jar 
Run Code Online (Sandbox Code Playgroud)

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

<taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${tool.ant.contrib}"/>
        </classpath>
    </taskdef>
Run Code Online (Sandbox Code Playgroud)

注意:我知道build.xml和属性文件应该在同一文件夹中作为标准做法.但我不想这样做......任何人都可以帮助我...

小智 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>
Run Code Online (Sandbox Code Playgroud)