java - 如何从 Ant 运行具有相对路径的 java 类?

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

最佳答案

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

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

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

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

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

关于java - 如何从 Ant 运行具有相对路径的 java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46679880/

相关文章:

Java线程yield方法查询

java - 对于 JDBC 准备语句,当 SQL 语句中提供实际值时,如何确定变量的位置

java - 编译时在 JSP 页面中发现错误

gradle - 将FMPP与Gradle一起使用

javascript - 在 macOS 上写入 Node.js 中的 ~/Documents 文件夹?

java - 我如何遍历 android.graphics.Path 段?

java - 如何使用翻新和MVVM使用用户输入查询API?

c++ - 没有复制文件的 TeamCity 依赖?

macos - ZSH PATH 变量条目在 OS X Catalina 上向后

java - Spring数据休息+Spring安全: @Secured not working