blob: 3d6c2b3418558c3c47c23f8e74620fdeba9f6781 [file] [log] [blame]
/*
* 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
)
}
}
}