我试图告诉gradle扩展名为*.dsl
的文件应该编译为groovy文件,因此我添加了一个包含模式的源代码集,并更改了compile task includes属性:
sourceSets {
...
dsl_scripts {
groovy {
include '**/*.dsl'
}
}
}
compileDsl_scriptsGroovy.includes = ['**/*.dsl']
字符串
但是,当我在调试模式下运行构建时,它会跳过所有*.dsl
文件,并显示以下消息:
Skipping task ':compileDsl_scriptsGroovy' as it has no source files
型
下面的代码行成功地输出了我尝试编译的所有文件:
println sourceSets.dsl_scripts.allSource.matching({include '**/*.dsl'}).getFiles()
型
我做错了什么?
编辑:我在gradle源代码中找到了以下代码片段:
FileCollection groovyJavaOnly = spec.getSource().filter(new Spec<File>() {
public boolean isSatisfiedBy(File element) {
return element.getName().endsWith(".groovy") || element.getName().endsWith(".java");
}
});
spec.setSource(new SimpleFileCollection(groovyJavaOnly.getFiles()));
型
有可能覆盖吗?
2条答案
按热度按时间2ul0zpep1#
这似乎是一个gradle错误http://issues.gradle.org/browse/GRADLE-2372
kxe2p93d2#
要使gradle groovy编译任务编译扩展名不是
.java
或.groovy
的文件,需要将新的扩展名添加到sourceSets
和编译任务的groovyOptions.fileExtensions
。例如,要使
compileTestGroovy
任务编译具有.dummy
扩展名的文件,除了.java
和.groovy
之外,还需要进行以下更改:字符串