如何使用Ant的相对路径运行java类?

时间:2017-10-11 04:30:36

标签: java ant path

我在java类中有一个文件定义,它有一个main方法,我希望能够从Eclipse运行菜单以及使用相对路径的Ant构建文件运行。

仅当从Eclipse运行菜单运行main方法时才有效:

private static final File location = new File("./implementation/src/xml/data");

仅在Ant中运行时才有效:

private static final File location = new File("./src/xml/data");

项目结构如下:

MyProject
    |
    |
implementation
   |       |
   |       |
  src    build.xml

这是Ant任务:

<target name="run">
    <java classname="test.XMLCreator" classpathref="compile-classpath" >
        <classpath>
            <pathelement location="${classes}" />
        </classpath>
    </java>
</target>

我理解这是因为在Ant中,路径是相对于构建文件的位置,而在java类中,它相对于源的根目录。

有没有办法覆盖Ant任务中的基本目录?

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。也许最简单的方法是为java任务中的dir属性指定相对值,例如:

<java classname="test.XMLCreator" classpathref="compile-classpath" dir=".." fork="true">

您还需要使用fork才能发挥作用,这可能会产生其他副作用。

关于您的具体问题:许多任务支持dir属性,有些使用嵌套文件集,因此您必须在嵌套元素上指定目录。

另一种方法是使用ant任务执行目标。其中指定的目录将用作目标中所有任务的basedir。