diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/dsl/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/gradle/api/artifacts/dsl/annotations.xml
new file mode 100644
index 00000000000..0402ed182e0
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/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/pom.xml b/libraries/tools/kotlin-gradle-plugin/pom.xml
index 543601c16bb..b4eb77b2478 100644
--- a/libraries/tools/kotlin-gradle-plugin/pom.xml
+++ b/libraries/tools/kotlin-gradle-plugin/pom.xml
@@ -20,6 +20,11 @@
jar
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${project.version}
+
org.jetbrains.kotlin
gradle-api
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 611f34ad2aa..a32bdb94c3d 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
@@ -3,11 +3,32 @@ package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.dsl.DependencyHandler
+import org.gradle.api.artifacts.ConfigurationContainer
+import org.gradle.api.artifacts.Dependency
+import org.gradle.api.specs.Spec
+import java.io.File
+import java.net.URL
open class KotlinPluginWrapper: Plugin {
public override fun apply(project: Project) {
- val dependencyHandler : DependencyHandler = project.getDependencies()
- dependencyHandler.create("org.jetbrains.kotlin:kotlin-gradle-plugin-core:0.1-SNAPSHOT")
+ val dependencyHandler : DependencyHandler = project.getDependencies()!!
+ val configurationsContainer : ConfigurationContainer = project.getConfigurations()!!
+ val dependency = dependencyHandler.create("org.jetbrains.kotlin:kotlin-gradle-plugin-core:0.1-SNAPSHOT")
+ val configuration = configurationsContainer.detachedConfiguration(dependency)!!
+
+ val kotlinPluginDependencies : List = configuration.getResolvedConfiguration()!!.getFiles(KSpec({ dep -> true }))!!.map({(f: File):URL -> f.toURI().toURL() })
+ val kotlinPluginClassloader = ParentLastURLClassLoader(kotlinPluginDependencies, getClass().getClassLoader())
+ val cls = Class.forName("org.jetbrains.kotlin.gradle.plugin.KotlinPlugin", true, kotlinPluginClassloader)
+ val pluginInstance = cls.newInstance()
+ val applyMethod = cls.getMethod("apply", javaClass())
+
+ applyMethod.invoke(pluginInstance, project);
}
-}
\ No newline at end of file
+}
+
+open class KSpec(val predicate: (T) -> Boolean): Spec {
+ public override fun isSatisfiedBy(p0: T?): Boolean {
+ return p0 != null && predicate(p0)
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/java/org/jetbrains/kotlin/gradle/classloaders/ParentLastURLClassLoader.java b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/ParentLastURLClassLoader.java
similarity index 98%
rename from libraries/tools/kotlin-gradle-plugin/src/main/java/org/jetbrains/kotlin/gradle/classloaders/ParentLastURLClassLoader.java
rename to libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/ParentLastURLClassLoader.java
index d71acde71e3..dec931c3baa 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/java/org/jetbrains/kotlin/gradle/classloaders/ParentLastURLClassLoader.java
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/ParentLastURLClassLoader.java
@@ -1,4 +1,4 @@
-package org.jetbrains.kotlin.gradle.classloaders;
+package org.jetbrains.kotlin.gradle.plugin;
import java.net.URL;