【问题标题】:How can I run a java class with a relative path from Ant?如何使用 Ant 的相对路径运行 java 类?
【发布时间】:2017-10-11 04:30:35
【问题描述】:

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

这仅在从 Eclipse 运行菜单运行主方法时有效:

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 任务中的基本目录?

【问题讨论】:

    标签: java ant path


    【解决方案1】:

    您可以通过多种方式做到这一点。也许最简单的方法是在您的java 任务中为dir 属性指定一个相对值,例如:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      相关资源
      最近更新 更多