背景:我有一個多項目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
}
有沒有更好的解決方案?也許我不必自己解決所有文件依賴關係?
測試文件夾已經被排除爲簡單起見,示例源。 –