Exercices/build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
kotlin("jvm") version "1.4.21"
jacoco
publishing
application
}
group = ""
version = "1.0"
java.sourceCompatibility = JavaVersion.VERSION_11
application.mainClassName = "examples.HelloKt"
java {
withJavadocJar()
withSourcesJar()
}
repositories {
jcenter()
mavenCentral()
}
tasks.withType<Jar> {
manifest {
attributes["Main-Class"] = "examples.MainKt"
}
from(sourceSets.main.get().output)
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}
dependencies {
constraints {
api("com.google.guava:guava") {
version{ rejectAll() } // To say you don't want guava in the project
}
}
implementation(kotlin("stdlib-jdk8"))
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")
testImplementation(kotlin("test"))
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.4.2")
testImplementation("org.junit.jupiter:junit-jupiter:5.4.2")
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}
tasks.test {
useJUnitPlatform() // To use the junit engine while test
testLogging {
showStandardStreams = true
exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
events( "skipped", "failed") // "passed" tests can be logged too.
}
}
tasks.jacocoTestReport {
reports {
xml.required.set(true)
html.required.set(true)
}
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
tasks.withType<JacocoCoverageVerification> {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.map {
fileTree(it).apply {
exclude("**/examples/**")
}
}))
}
}
tasks.withType<JacocoReport> {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.map {
fileTree(it).apply {
exclude("**/examples/**")
}
}))
}
}