diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
index a1a14699122..67c82aa96e6 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
@@ -1,29 +1,32 @@
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml
new file mode 100644
index 00000000000..622af2f52eb
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml
@@ -0,0 +1,8 @@
+
+ -
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/dsl/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/dsl/annotations.xml
new file mode 100644
index 00000000000..2629a955f8a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/artifacts/dsl/annotations.xml
@@ -0,0 +1,5 @@
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml
index a33a584b9ed..9f68f95d91a 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/initialization/dsl/annotations.xml
@@ -4,4 +4,7 @@
+ -
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
index fd3478ccc87..1cf7b0e4af3 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
@@ -33,6 +33,10 @@ import com.android.builder.model.BuildType
import com.android.builder.BuilderConstants
import com.android.build.gradle.api.TestVariant
import org.gradle.api.plugins.JavaPlugin
+import org.gradle.api.artifacts.dsl.DependencyHandler
+import org.gradle.api.artifacts.ConfigurationContainer
+import org.gradle.api.artifacts.Dependency
+import java.util.HashSet
open class KotlinPlugin: Plugin {
@@ -44,6 +48,9 @@ open class KotlinPlugin: Plugin {
configureSourceSetDefaults(project as ProjectInternal, javaBasePlugin, javaPluginConvention)
configureKDoc(project, javaPluginConvention)
+
+ val version = project.getProperties()!!.get("kotlin.gradle.plugin.version") as String
+ project.getExtensions().add(KotlinCompile.DEFAULT_ANNOTATIONS, GradleUtils.resolveDependencies(project, "org.jetbrains.kotlin:kotlin-jdk-annotations:$version"))
}
@@ -159,6 +166,9 @@ open class KotlinAndroidPlugin: Plugin {
}
})
+ val version = project.getProperties()!!.get("kotlin.gradle.plugin.version") as String
+ project.getExtensions().add(KotlinCompile.DEFAULT_ANNOTATIONS, GradleUtils.resolveDependencies(project, "org.jetbrains.kotlin:kotlin-jdk-annotations:$version",
+ "org.jetbrains.kotlin:kotlin-android-sdk-annotations:$version"));
}
private fun processVariants(variants: DefaultDomainObjectSet, project: Project, androidExt: BaseExtension): Unit {
@@ -258,3 +268,22 @@ open class KSpec(val predicate: (T) -> Boolean): Spec {
return p0 != null && predicate(p0)
}
}
+
+open class GradleUtils() {
+ class object {
+ public fun resolveDependencies(project: Project, vararg coordinates: String): Collection {
+ val dependencyHandler : DependencyHandler = project.getBuildscript().getDependencies()
+ val configurationsContainer : ConfigurationContainer = project.getBuildscript().getConfigurations()
+
+ val deps = HashSet()
+ for (coordinate in coordinates) {
+ deps.add(dependencyHandler.create(coordinate))
+ }
+ val array : Array = deps.toArray(Array(deps.size(),{null}))
+ val configuration = configurationsContainer.detachedConfiguration(*array)
+
+ return configuration.getResolvedConfiguration().getFiles(KSpec({ dep -> true }))!!
+ }
+ }
+}
+
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
index 2513eec80c2..a496604179f 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
@@ -27,6 +27,10 @@ import org.apache.commons.io.FileUtils
public open class KotlinCompile(): AbstractCompile() {
+ class object {
+ val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
+ }
+
val srcDirsRoots = HashSet()
val compiler = K2JVMCompiler()
val logger = Logging.getLogger(getClass())
@@ -105,7 +109,7 @@ public open class KotlinCompile(): AbstractCompile() {
val embeddedAnnotations = getAnnotations()
val userAnnotations = (kotlinOptions.annotations ?: "").split(File.pathSeparatorChar).toList()
- val allAnnotations = if (kotlinOptions.noJdkAnnotations) userAnnotations else userAnnotations.plus(embeddedAnnotations.getPath())
+ val allAnnotations = if (kotlinOptions.noJdkAnnotations) userAnnotations else userAnnotations.plus(embeddedAnnotations.map {it.getPath()})
args.annotations = allAnnotations.makeString(File.pathSeparator)
args.noStdlib = true
@@ -124,19 +128,14 @@ public open class KotlinCompile(): AbstractCompile() {
FileUtils.copyDirectory(kotlinDestinationDir, getDestinationDir())
}
- fun getAnnotations(): File {
- val configuration = getProject()
- .getBuildscript()
- .getConfigurations()
- .getByName(ScriptHandler.CLASSPATH_CONFIGURATION)!!
+ fun getAnnotations(): Collection {
+ val annotations = getProject().getExtensions().getByName(DEFAULT_ANNOTATIONS) as Collection
- val jdkAnnotationsFromClasspath = configuration.find { it.name.startsWith("kotlin-jdk-annotations") }
-
- if (jdkAnnotationsFromClasspath != null) {
- logger.info("using jdk annontations from [${jdkAnnotationsFromClasspath.getAbsolutePath()}]")
- return jdkAnnotationsFromClasspath
+ if (!annotations.isEmpty()) {
+ logger.info("using default annontations from [${annotations.map {it.getPath()}}]")
+ return annotations
} else {
- throw GradleException("kotlin-jdk-annotations not found in Kotlin gradle plugin classpath")
+ throw GradleException("Default annotations not found in Kotlin gradle plugin classpath")
}
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
index 7fc7be8cb97..cdc81aaa667 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
@@ -30,11 +30,12 @@ class BasicKotlinGradleIT {
Test fun testSimpleCompile() {
val projectDir = File(workingDir, "alfa")
- val pathToKotlinPlugin = "-PpathToKotlinPlugin=" + File("local-repo").getAbsolutePath()
+ val pathToKotlinPlugin = "-PpathToKotlinPlugin=${File("local-repo").getAbsolutePath()}"
+ val version = "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT"
val cmd = if (SystemInfo.isWindows)
- listOf("cmd", "/C", "gradlew.bat", "compileDeployKotlin", "build", pathToKotlinPlugin, "--no-daemon", "--debug")
+ listOf("cmd", "/C", "gradlew.bat", "compileDeployKotlin", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
else
- listOf("/bin/bash", "./gradlew", "compileDeployKotlin", "build", pathToKotlinPlugin, "--no-daemon", "--debug")
+ listOf("/bin/bash", "./gradlew", "compileDeployKotlin", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
val builder = ProcessBuilder(cmd)
builder.directory(projectDir)
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 dc5cd1bbcbe..67c82aa96e6 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
@@ -1,18 +1,32 @@
+
- -
-
-
-
+
-
+
- -
+
-
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
- -
-
+
-
+
- -
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml
index 885acfdd4ab..622af2f52eb 100644
--- a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/annotations.xml
@@ -2,4 +2,7 @@
-
+ -
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/file/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/file/annotations.xml
index dea5cec6774..86cc0e5f0c1 100644
--- a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/file/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/file/annotations.xml
@@ -2,4 +2,7 @@
-
+ -
+
+
\ 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
index 4005fe3c2c3..9f68f95d91a 100644
--- 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
@@ -5,8 +5,6 @@
-
-
-
-
+
\ 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 c14ebed20ae..0c7f23a66ff 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
@@ -1,15 +1,17 @@
+
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
-
\ No newline at end of file
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/plugins/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/plugins/annotations.xml
index 5859b33807e..fb08bfa4358 100644
--- a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/plugins/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/plugins/annotations.xml
@@ -1,22 +1,27 @@
+
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
\ 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 f3474e9b223..4ce72f19ffc 100644
--- a/libraries/tools/kotlin-gradle-plugin/pom.xml
+++ b/libraries/tools/kotlin-gradle-plugin/pom.xml
@@ -25,11 +25,6 @@
kotlin-stdlib
${project.version}
-
- org.jetbrains.kotlin
- kotlin-jdk-annotations
- ${project.version}
-
org.jetbrains.kotlin
gradle-api
@@ -91,6 +86,8 @@
verify
org.jetbrains.kotlin:kotlin-gradle-plugin-core:${project.version}
+ org.jetbrains.kotlin:kotlin-jdk-annotations:${project.version}
+ org.jetbrains.kotlin:kotlin-android-sdk-annotations:${project.version}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
index 96c7f408828..bebeac07ed6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
@@ -12,7 +12,7 @@ import org.gradle.api.logging.Logging
import java.util.Properties
import java.io.FileNotFoundException
-open abstract class KotlinBasePluginWrapper: Plugin {
+abstract class KotlinBasePluginWrapper: Plugin {
val log = Logging.getLogger(getClass())!!
@@ -31,8 +31,9 @@ open abstract class KotlinBasePluginWrapper: Plugin {
props.load(inputStream);
- val projectVersion = props.get("project.version")
- log.debug("Found project version [" + projectVersion + "]")
+ val projectVersion = props.get("project.version") as String
+ log.debug("Found project version [$projectVersion]")
+ project.getExtensions().getExtraProperties()?.set("kotlin.gradle.plugin.version", projectVersion)
log.debug("Creating configuration and dependency")
val kotlinPluginCoreCoordinates = "org.jetbrains.kotlin:kotlin-gradle-plugin-core:" + projectVersion
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/AndroidAlfa/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/AndroidAlfa/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt
index 06d9cb69f92..fbc8bf81295 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/AndroidAlfa/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/AndroidAlfa/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt
@@ -16,7 +16,7 @@ open class MainActivity2: Activity() {
var next: Button = findViewById(R.id.Button02) as Button
next.setOnClickListener(object: View.OnClickListener {
- public override fun onClick(view: View?): Unit {
+ public override fun onClick(view: View): Unit {
val intent: Intent = Intent()
setResult(Activity.RESULT_OK, intent)
finish()