我正在尝试让Ant编译我的项目,该项目具有以下目录结构:
MyProject/
src/main/java/
com/
<The rest of my source>
gen/
bin/
main/
<Where I want all Java sources compiled to>
lib/
main/
<All of my dependencies>
build.xml
build.properties
这是我的Ant任务:
<path id="src.main.java.path">
<fileset dir="src/main/java">
<include name="**.*java"/>
</fileset>
</path>
<path id="lib.main.path">
<fileset dir="lib/main">
<include name="**.*jar"/>
</fileset>
</path>
<target name="compile">
<javac includeantruntime="true" srcdir="src/main/java" destdir="gen/bin/main">
<!--
Define a new classpath composed of all main Java sources and main Java dependencies,
and use them for this compilation.
-->
<classpath>
<pathelement path="src.main.java.path"/>
<pathelement path="lib.main.path"/>
</classpath>
</javac>
</target>
我应该提到build.xml
位于项目根目录,并且其basedir
属性设置为"."
(项目根目录)。
当我运行“编译”任务时,我得到100多个编译器错误,它找不到任何我的项目依赖项(例如Guice,Joda-Time,XStream等):
compile:
[javac] Compiling 53 source files to /<path-to-my-project-root>/MyProject/gen/bin/main
[javac] /<path-to-my-project-root>/MyProject/src/main/java/org/me/Widget.java:37: package com.google.inject does not exist
[javac] import com.google.inject.AbstractModule;
[javac] ^
[javac] /<path-to-my-project-root>/MyProject/src/main/java/org/me/MyWidget.java:45: cannot find symbol
[javac] symbol: class AbstractModule
[javac] public class AppUziContext extends AbstractModule {
[javac]
BUILD FAILED
/<path-to-my-project>/MyProject/build.xml:51: Compile failed; see the compiler error output for details.
...这个列表是100多个错误,看起来都像这样,但对于它找不到的每个依赖项都有所不同。
我认为问题出在我配置的路径中并且在javac/classpath
内部引用,但在阅读了Ant文档后,我无法弄清楚我在哪里出错。提前谢谢!
答案 0 :(得分:3)
在您的目标中尝试此操作:
<classpath>
<path refid="src.main.java.path"/>
<path refid="lib.main.path"/>
</classpath>
我通常为目标制作完整的类路径,然后在目标中使用单行类路径:
<path id="target.class.path">
<path refid="src.main.java.path"/>
<path refid="lib.main.path"/>
</path>
然后在目标中:
<classpath refid="target.class.path"/>
pathelement
没有很好的记录,this是你从蚂蚁网站获得的最好的。请注意,在这些示例中,<pathelement path=
始终与属性一起使用,否则它是<pathelement location
获取实际文件夹名称(也可能是属性)。