| /* |
| * Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| |
| apply plugin: "com.github.johnrengelman.shadow" |
| |
| configurations { |
| shadowDeps // shaded dependencies, not included into the resulting .pom file |
| compileOnly.extendsFrom(shadowDeps) |
| runtimeOnly.extendsFrom(shadowDeps) |
| } |
| |
| dependencies { |
| compileOnly "junit:junit:$junit_version" |
| compileOnly "org.junit.jupiter:junit-jupiter-api:$junit5_version" |
| testImplementation "org.junit.jupiter:junit-jupiter-engine:$junit5_version" |
| testImplementation "org.junit.platform:junit-platform-testkit:1.7.0" |
| shadowDeps "net.bytebuddy:byte-buddy:$byte_buddy_version" |
| shadowDeps "net.bytebuddy:byte-buddy-agent:$byte_buddy_version" |
| compileOnly "io.projectreactor.tools:blockhound:$blockhound_version" |
| testImplementation "io.projectreactor.tools:blockhound:$blockhound_version" |
| testImplementation "com.google.code.gson:gson:2.8.6" |
| api "net.java.dev.jna:jna:$jna_version" |
| api "net.java.dev.jna:jna-platform:$jna_version" |
| } |
| |
| java { |
| /* This is needed to be able to run JUnit5 tests. Otherwise, Gradle complains that it can't find the |
| JVM1.6-compatible version of the `junit-jupiter-api` artifact. */ |
| disableAutoTargetJvm() |
| } |
| |
| jar { |
| setEnabled(false) |
| } |
| |
| // This is a rough estimation of what shadow plugin has been doing with our default configuration prior to |
| // 1.6.2: https://github.com/johnrengelman/shadow/blob/1ff12fc816629ae5bc331fa3889c8ecfcaee7b27/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy#L72-L82 |
| // We just emulate it here for backwards compatibility |
| shadowJar.configure { |
| def classpath = project.objects.fileCollection().from { -> |
| project.configurations.findByName('runtimeClasspath') |
| } |
| doFirst { |
| manifest.attributes 'Class-Path': classpath.collect { "${it.name}" }.findAll { it }.join(' ') |
| } |
| } |
| |
| def shadowJarTask = shadowJar { |
| classifier null |
| // Shadow only byte buddy, do not package kotlin stdlib |
| configurations = [project.configurations.shadowDeps] |
| relocate('net.bytebuddy', 'kotlinx.coroutines.repackaged.net.bytebuddy') |
| |
| manifest { |
| attributes "Premain-Class": "kotlinx.coroutines.debug.AgentPremain" |
| attributes "Can-Redefine-Classes": "true" |
| } |
| } |
| |
| configurations { |
| artifacts { |
| add("apiElements", shadowJarTask) |
| add("runtimeElements", shadowJarTask) |
| } |
| } |
| |
| def commonKoverExcludes = |
| // Never used, safety mechanism |
| ["kotlinx.coroutines.debug.internal.NoOpProbesKt"] |
| |
| tasks.koverHtmlReport { |
| excludes = commonKoverExcludes |
| } |
| |
| tasks.koverVerify { |
| excludes = commonKoverExcludes |
| } |