2016-07-12 18 views
0

非標準のマルチプロジェクトグラデルセットアップでマージされた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、私のビルドログによると)?

答えて

0

私はgradleバージョンに関する私の質問とは別に、問題を解決しました。何らかの理由でレポートの宛先ディレクトリがデフォルト値で設定されていなかったため、次のようにレポートを調整することで作業を開始できました:

関連する問題