我在一个 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/