From e4b5165e8aa73bed1292211403564fc9d88351dc Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Wed, 27 Mar 2013 14:40:02 +0400 Subject: [PATCH] use jdk annotations from maven repository --- .../org/gradle/api/annotations.xml | 5 +++ .../api/initialization/dsl/annotations.xml | 7 ++++ .../org/gradle/api/internal/annotations.xml | 5 +++ libraries/tools/kotlin-gradle-plugin/pom.xml | 5 +++ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 32 +++++++++---------- 5 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/annotations.xml index bef387a3e38..dc5cd1bbcbe 100644 --- a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/annotations.xml +++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/annotations.xml @@ -10,4 +10,9 @@ + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml new file mode 100644 index 00000000000..a33a584b9ed --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/internal/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/internal/annotations.xml index 763aaf5197f..c14ebed20ae 100644 --- a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/internal/annotations.xml +++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/internal/annotations.xml @@ -7,4 +7,9 @@ + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/pom.xml b/libraries/tools/kotlin-gradle-plugin/pom.xml index ff7cb884e39..f3602e2ce62 100644 --- a/libraries/tools/kotlin-gradle-plugin/pom.xml +++ b/libraries/tools/kotlin-gradle-plugin/pom.xml @@ -52,6 +52,11 @@ kotlin-compiler ${project.version} + + org.jetbrains.kotlin + kotlin-jdk-annotations + ${project.version} + org.jetbrains.kotlin kdoc diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index da3f962b9d4..720b177b824 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -31,12 +31,13 @@ import org.gradle.api.logging.Logging import org.apache.commons.io.FileUtils import java.io.IOException import org.apache.commons.lang.StringUtils +import org.gradle.api.initialization.dsl.ScriptHandler public open class KotlinCompile(): AbstractCompile() { val srcDirsRoots = HashSet() val compiler = K2JVMCompiler() - val logger = getLogger() + val logger = Logging.getLogger(getClass()) public val kotlinOptions: K2JVMCompilerArguments = K2JVMCompilerArguments() @@ -112,17 +113,9 @@ public open class KotlinCompile(): AbstractCompile() { args.outputDir =if (StringUtils.isEmpty(kotlinOptions.outputDir)) { getDestinationDir()?.getPath() } else { kotlinOptions.outputDir } args.annotations = if (StringUtils.isEmpty(kotlinOptions.annotations)) { embeddedAnnotations.getPath() } else { kotlinOptions.annotations } - val logger = Logging.getLogger(getClass()) val messageCollector = GradleMessageCollector(logger) val exitCode = compiler.exec(messageCollector, args) - val annotationsDir = embeddedAnnotations.getParentFile() - try { - FileUtils.deleteDirectory(annotationsDir); - } catch (e : IOException) { - logger.warn("Could not delete temporary annotations directory " + annotationsDir, e) - } - when (exitCode) { ExitCode.COMPILATION_ERROR -> throw GradleException("Compilation error. See log for more details") ExitCode.INTERNAL_ERROR -> throw GradleException("Internal compiler error. See log for more details") @@ -131,20 +124,26 @@ public open class KotlinCompile(): AbstractCompile() { } fun getAnnotations(): File { - val jdkAnnotations: String = "kotlin-jdk-annotations.jar" - val jdkAnnotationsResource = Resources.getResource(jdkAnnotations) ?: - throw GradleException(jdkAnnotations + " not found in Kotlin gradle plugin classpath") + val configuration = getProject() + .getBuildscript() + .getConfigurations() + .getByName(ScriptHandler.CLASSPATH_CONFIGURATION)!! - val jdkAnnotationsTempDir = Files.createTempDir() - val jdkAnnotationsFile = File(jdkAnnotationsTempDir, jdkAnnotations) + val jdkAnnotationsFromClasspath = configuration.find { it.name.startsWith("kotlin-jdk-annotations") } - Files.copy(Resources.newInputStreamSupplier(jdkAnnotationsResource), jdkAnnotationsFile) - return jdkAnnotationsFile + if (jdkAnnotationsFromClasspath != null) { + logger.info("using jdk annontations from [${jdkAnnotationsFromClasspath.getAbsolutePath()}]") + return jdkAnnotationsFromClasspath + } else { + throw GradleException("kotlin-jdk-annotations not found in Kotlin gradle plugin classpath") + } } } public open class KDoc(): SourceTask() { + val logger = Logging.getLogger(getClass()) + /** * Returns the directory to use to output the API docs */ @@ -216,7 +215,6 @@ public open class KDoc(): SourceTask() { val compiler = KDocCompiler() - val logger = Logging.getLogger(getClass()) val messageCollector = GradleMessageCollector(logger) val exitCode = compiler.exec(messageCollector, args);