Could not get unknown property 'classesDir' for main classes of type org.gradle.api.internal.task...

在gradle?與jacoco集成以后build時會報以上錯誤,原因是SourceSetOutput.getClassesDir()?是?Gradle 4中的方法,在Gradle 5中被標記過時,替代方法是 getClassesDirs() ,此時返回值是FileCollection。要想獲得File,需調(diào)用getSingleFile()。

解決方式如下:

將? output.classesDir?替換成??output.classesDirs.singleFile

修改后的集成腳本如下:

//Additional SourceSets can be added to the jacocoOfflineSourceSets as needed by

project.ext.jacocoOfflineSourceSets = [?'main'?]

task doJacocoOfflineInstrumentation(dependsOn: [ classes, project.configurations.jacocoAnt ]) {

????inputs.files classes.outputs.files

????File outputDir =?new?File(project.buildDir,?'instrumentedClasses')

????outputs.dir outputDir

????doFirst {

????????project.delete(outputDir)

????????ant.taskdef(

????????????????resource:?'org/jacoco/ant/antlib.xml',

????????????????classpath: project.configurations.jacocoAnt.asPath,

????????????????uri:?'jacoco'

????????)

????????def instrumented =?false

????????jacocoOfflineSourceSets.each { sourceSetName ->

????????????if?(file(sourceSets[sourceSetName].output.classesDirs.singleFile).exists()) {

????????????????def instrumentedClassedDir =?"${outputDir}/${sourceSetName}"

????????????????ant.'jacoco:instrument'(destdir: instrumentedClassedDir) {

????????????????????fileset(dir: sourceSets[sourceSetName].output.classesDirs.singleFile, includes:?'**/*.class')

????????????????}

????????????????//Replace the classes dir in the test classpath with the instrumented one

????????????????sourceSets.test.runtimeClasspath -= files(sourceSets[sourceSetName].output.classesDirs.singleFile)

????????????????sourceSets.test.runtimeClasspath += files(instrumentedClassedDir)

????????????????instrumented =?true

????????????}

????????}

????????if?(instrumented) {

????????????//Disable class verification based on?https://github.com/jayway/powermock/issues/375

????????????test.jvmArgs +=?'-noverify'

????????}

????}

}

test.dependsOn doJacocoOfflineInstrumentation


jacocoTestReport {

????reports {

????????xml.enabled?true

????????csv.enabled?true

????????html.enabled?true

????}

}

check.dependsOn jacocoTestReport

Gradle 5.6 源碼鏈接:?https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSetOutput.html?_ga=2.59713389.1546270617.1566195252-732042021.1552302913#getClassesDirs--

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容