blob: 6372610e1b4ae1fcf9079a7341d97743946285d4 [file] [log] [blame] [edit]
/*
* 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)
}
}
tasks.withType<JavaCompile> {
doLast {
instrumentClasses(javaInstrumentator.asPath)
}
}
}
}
fun JavaCompile.instrumentClasses(instrumentatorClasspath: String) {
ant.withGroovyBuilder {
"taskdef"(
"name" to "instrumentIdeaExtensions",
"classpath" to instrumentatorClasspath,
"loaderref" to "java2.loader",
"classname" to "com.intellij.ant.InstrumentIdeaExtensions"
)
}
val sourceSet = project.sourceSets.single { it.compileJavaTaskName == name }
val javaSourceDirectories = sourceSet.allJava.sourceDirectories.filter { it.exists() }
ant.withGroovyBuilder {
javaSourceDirectories.forEach { directory ->
"instrumentIdeaExtensions"(
"srcdir" to directory,
"destdir" to destinationDir,
"classpath" to classpath.asPath,
"includeantruntime" to false,
"instrumentNotNull" to true
)
}
}
}