Эта ошибка НЕ возникла в версии Gradle 4.10.2
Строка classDirectories = files(filesToCover)
заставляет Gradle выдать ошибку:
* What went wrong:
Script compilation error:
Line 80: classDirectories = files(filesToCover)
^ Val cannot be reassigned
Но когда выпосмотрите на базовый класс Java JacocoReportBase
, вы можете ясно увидеть, что есть установщик и свойство класса не является окончательным.
public abstract class JacocoReportBase extends JacocoBase {
private FileCollection executionData;
private FileCollection sourceDirectories;
private FileCollection classDirectories;
private FileCollection additionalClassDirs;
private FileCollection additionalSourceDirs;
...
public void setClassDirectories(FileCollection classDirectories) {
this.classDirectories = classDirectories;
}
build.gradle.kts
tasks {
withType<KotlinCompile<KotlinJvmOptions>> {
kotlinOptions.freeCompilerArgs = listOf("-Xjsr305=strict")
kotlinOptions.jvmTarget = "1.8"
}
withType<JacocoReport> {
reports {
xml.isEnabled = false
csv.isEnabled = false
html.destination = file("$buildDir/jacocoHtml")
}
afterEvaluate {
val filesToAvoidForCoverage = listOf(
"/dto",
"/config",
"AuthenticationMicroServiceKt.class"
)
val filesToCover = mutableListOf<String>()
File("build/classes/kotlin/main/app/example/core/")
.walkTopDown()
.mapNotNull { file ->
var match = false
filesToAvoidForCoverage.forEach {
if (file.absolutePath.contains(it)) {
match = true
}
}
return@mapNotNull if (!match) {
file.absolutePath
} else {
null
}
}
.filter { it.contains(".class") }
.toCollection(filesToCover)
classDirectories = files(filesToCover) // error
}
}
}
Я также опубликовал проблему в Github здесь