背景:我有一个多项目Gradle构建,并且我定义了一个Gradle任务,它在Exec任务中运行JavaScript单元测试。此任务的输入是项目中的JavaScript文件,因此只有修改了其中一个源文件时才会重新运行。该任务将添加到来自主项目的所有JavaScript项目中。使用来自项目依赖关系的输入定义Gradle任务?
问:我要扩展这个,这样的测试重新运行项目中的JavaScript文件,或任何其项目依赖的改变。这最好的做法是什么?
下面的代码如果放置在每个子项目构建文件中(在依赖声明之后),但是我们有20多个JavaScript子项目,我想保持DRY。
project.ext.jsSourceFiles = fileTree("src/").include("**/*.js*")
task testJavaScript(type: Exec, dependsOn: configurations.js) {
inputs.files resolveJavascriptDependenciesFor(project)
outputs.file "report.xml"
// Run tests in JSTestDriver using command line call...
}
def resolveJavascriptDependenciesFor(project) {
def files = project.jsSourceFiles
project.configurations.js.allDependencies.each {
files = files + resolveJavascriptDependenciesFor(it.dependencyProject)
}
return files
}
有没有更好的解决方案?也许我不必自己解决所有文件依赖关系?
测试文件夹已经被排除为简单起见,示例源。 –