非標準のマルチプロジェクトグラデルセットアップでマージされたJacocoテストカバレッジレポートを生成しようとしています。次のグラベルコードでは2つのタスクがあります。最初のもの、jacocoMergeは、今すぐに動作します(多くの苦労の後)、適切な場所にcombined.execファイルを生成します。 2番目のタスクjacocoMergedReportは、ログトレースに基づいてエラーなしで実行されているようですが、何もしません。実行直後にトレースにNULLポインタ例外があります。Gradle JacocoReportタスクは、例外を混乱させます。
はここでGradleの断片である:(2.14 - Eclipseの立ち上げを経てラッパーから実行している)私は入力とGradleのバージョンを確認しました
afterEvaluate {
task jacocoMerge(type: JacocoMerge) {
executionData testTasks
destinationFile = file("$buildDir/../reports/combined.exec")
executionData = files(executionData.findAll({ it.exists() }))
jacocoClasspath = cp
}
task jacocoMergedReport(type: org.gradle.testing.jacoco.tasks.JacocoReport, dependsOn: 'jacocoMerge') {
jacocoClasspath = cp
executionData = files("$buildDir/../reports/combined.exec")
sourceDirectories = files(subprojects.findAll { isActualProject(it) }.sourceSets.main.allSource.srcDirs).filter({it.exists()})
classDirectories = files(subprojects.findAll { isActualProject(it) }.sourceSets.main.output).filter({it.exists()})
reports {
html.enabled = true
xml.enabled = true
csv.enabled = true
}
executionData.each {println it}
}
}
println
文と、それはすべて私にはよさそうです。どうやら
しかし、それはほかに何も発生していない、nullポインタ例外:
java.lang.NullPointerException at org.gradle.api.internal.project.taskfactory.OutputDirectoryPropertyAnnotationHandler$1.validate(OutputDirectoryPropertyAnnotationHandler.java:49)
フルスタックトレースとエラーに先立つjacocoMergedReportタスクに関する奨励ライフサイクルメッセージがin this pastebin fileご利用いただけます。
私はsource code on github for this classを見ましたが、奇妙なことに、行番号とメソッド名は、an earlier versionが2.14より大きいと思われます。
何故このエラーが発生するのですか?また、なぜgradleがそのバージョンが2.14だと伝えていますが、スタックトレースは2.14のビルド時間前に最後にコミットされたコードではなく、 (2016年6月14日07時16分37秒UTC、私のビルドログによると)?