65 lines
2.1 KiB
Kotlin
65 lines
2.1 KiB
Kotlin
/*
|
|
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
*/
|
|
|
|
allprojects {
|
|
afterEvaluate {
|
|
configureJavaInstrumentation()
|
|
}
|
|
}
|
|
|
|
// Hide window of instrumentation tasks
|
|
val headlessOldValue: String? = System.setProperty("java.awt.headless", "true")
|
|
logger.info("Setting java.awt.headless=true, old value was $headlessOldValue")
|
|
|
|
/**
|
|
* Configures instrumentation for all JavaCompile tasks in project
|
|
*/
|
|
fun Project.configureJavaInstrumentation() {
|
|
if (plugins.hasPlugin("org.gradle.java")) {
|
|
val javaInstrumentator by configurations.creating
|
|
dependencies {
|
|
javaInstrumentator(intellijDep()) {
|
|
includeJars("javac2", "jdom", "asm-all", rootProject = rootProject)
|
|
}
|
|
}
|
|
|
|
listOf(mainSourceSet, testSourceSet).forEach { sourceSet ->
|
|
tasks.named<JavaCompile>(sourceSet.compileJavaTaskName) javaCompile@ {
|
|
doLast {
|
|
instrumentClasses(javaInstrumentator.asPath, this@javaCompile, sourceSet)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fun instrumentClasses(
|
|
instrumentatorClasspath: String,
|
|
javaCompile: JavaCompile,
|
|
sourceSet: SourceSet
|
|
) {
|
|
javaCompile.ant.withGroovyBuilder {
|
|
"taskdef"(
|
|
"name" to "instrumentIdeaExtensions",
|
|
"classpath" to instrumentatorClasspath,
|
|
"loaderref" to "java2.loader",
|
|
"classname" to "com.intellij.ant.InstrumentIdeaExtensions"
|
|
)
|
|
}
|
|
|
|
val javaSourceDirectories = sourceSet.allJava.sourceDirectories.filter { it.exists() }
|
|
|
|
javaCompile.ant.withGroovyBuilder {
|
|
javaSourceDirectories.forEach { directory ->
|
|
"instrumentIdeaExtensions"(
|
|
"srcdir" to directory,
|
|
"destdir" to javaCompile.destinationDir,
|
|
"classpath" to javaCompile.classpath.asPath,
|
|
"includeantruntime" to false,
|
|
"instrumentNotNull" to true
|
|
)
|
|
}
|
|
}
|
|
} |