for some reasons我不使用java插件进行gradle,而是动态调用ant.javac
。如何基于列表构建动态Javac include()
?
例如:
def srcToCompile=["**/File1.java","**/File2.java","**/FileN.java"];
(...)
ant.javac(
destdir: tmpDir,
srcdir: srcDir
includeantruntime:false,
failonerror: true,
fork: true,
classpath : classpath1,
debug: true
) {
include(name: srcToCompile) //<< DOESN'T WORK, I also tested srcToCompile.join(":")
}
谢谢。
编辑:“不起作用”是指ant.javac
不能解释List
或冒号分隔的字符串:找不到源,并且什么都没有编译。 ant.javac
希望得到类似
include(name:"**/File1.java")
include(name:"**/File2.java")
include(name:"**/FileN.java")
但是我想在调用gradle时生成include
的列表。
答案 0 :(得分:2)
如果您查看ant javac docs,将会看到包含和包含两个都接受一个字符串,但是您正在尝试传递一个集合
例如:
<javac destdir="${build}"
classpath="xyz.jar"
debug="on">
<src path="${src}"/>
<src path="${src2}"/>
<include name="mypackage/p1/**"/>
<include name="mypackage/p2/**"/>
<exclude name="mypackage/p1/testpackage/**"/>
</javac>
和
<javac srcdir="${src}"
destdir="${build}"
includes="mypackage/p1/**,mypackage/p2/**"
excludes="mypackage/p1/testpackage/**"
classpath="xyz.jar"
debug="on"/>
在Gradle中应该是
ant.javac(includes: srcToCompile.join(','), ...)
或
ant.javac(
...
) {
srcToCompile.each {
include(name: it)
}
}