假设我在我的 src/ 树中有我的资源(也可能在我的 test/ 树中)。假设我只想编译那棵树的一部分。我可能想要这样做的原因是多种多样的。举个例子,我可能想要创建尽可能小的 jar(不包括某些类),或者我可能想要我正在编译的最快的编译时间。不过,我绝对想编译所有依赖项!
这可以通过命令行轻松实现:
javac -d build/ -cp whatever -sourcepath src src/path/to/MyClass.java
现在,你怎么能用蚂蚁做到这一点?javac ant任务编译所有内容:
将递归扫描源目录和目标目录以查找要编译的 Java 源文件。
可以使用excludes
andincludes
参数,但它们为此目的是有问题的。事实上,似乎必须明确设置所有includes
(不是自动依赖查找),甚至最坏的排除优先于包含:
当同时使用包含和排除时,仅使用与至少一个包含模式匹配且不匹配任何排除模式的文件/目录。
因此,您不能使用
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
excludes="**/*.java" includes="src/path/to/MyClass.java" />
因为它不会编译任何东西:-(
有没有办法javac
用 ant 实现那个简单的命令行?
编辑:谢谢你的回答,萨迪,我接受它,因为它确实以我在这个问题中想知道的方式工作。但是我有几条评论(太长了,不能在您的答案的评论字段中):
1)我确实阅读了文档(请参阅上面的链接),但不清楚是否只有includes
您实际上也排除了其他所有内容
2)当你只是includes
蚂蚁记录类似
[javac] Compiling 1 source file to /my/path/to/build
即使依赖项使其编译(远)不仅仅是一个源文件。