diff --git a/libraries/kotlin-install/pom.xml b/libraries/kotlin-install/pom.xml
new file mode 100644
index 00000000000..7f4d8058f67
--- /dev/null
+++ b/libraries/kotlin-install/pom.xml
@@ -0,0 +1,129 @@
+
+
+
+ 4.0.0
+
+ 1.4.1
+ 3.0.4
+
+
+
+ org.jetbrains.kotlin
+ kotlin-project
+ 1.0-SNAPSHOT
+
+
+ kotlin-install
+ pom
+
+ Installs the Kotlin runtime dependencies into the local maven repo
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+
+
+ org.jetbrains.kotlin:kotlin-compiler
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ kotlin-compiler
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/kotlin-compiler.jar
+ true
+ true
+
+
+
+ org.jetbrains.kotlin:kotlin-build-tools
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ kotlin-build-tools
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/kotlin-build-tools.jar
+ true
+ true
+
+
+
+ org.jetbrains.kotlin:intellij-core
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ intellij-core
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/intellij-core.jar
+ true
+ true
+
+
+
+ org.jetbrains.kotlin:intellij-annotations
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ intellij-annotations
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/annotations.jar
+ true
+ true
+
+
+
+ org.jetbrains.kotlin:trove4j
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ trove4j
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/trove4j.jar
+ true
+ true
+
+
+
+ org.jetbrains.kotlin:picocontainer
+ verify
+
+ install-file
+
+
+ org.jetbrains.kotlin
+ picocontainer
+ ${project.version}
+ jar
+ ${kotlin-sdk}/lib/picocontainer.jar
+ true
+ true
+
+
+
+
+
+
+
diff --git a/libraries/kotlin-maven-plugin/ReadMe.md b/libraries/kotlin-maven-plugin/ReadMe.md
index 942e776a84c..88a32b84cf1 100644
--- a/libraries/kotlin-maven-plugin/ReadMe.md
+++ b/libraries/kotlin-maven-plugin/ReadMe.md
@@ -1,4 +1,4 @@
-## NOTE - this is just an initial spike so far as Kotlin doesn't support value annotations yet
+## NOTE - this is just an initial spike of some maven plugins
Until this plugin is working, please use this maven plugin:
http://evgeny-goldin.com/wiki/Kotlin-maven-plugin
\ No newline at end of file
diff --git a/libraries/kotlin-maven-plugin/pom.xml b/libraries/kotlin-maven-plugin/pom.xml
index 7ad2fd28444..1c097731cf1 100644
--- a/libraries/kotlin-maven-plugin/pom.xml
+++ b/libraries/kotlin-maven-plugin/pom.xml
@@ -16,61 +16,142 @@
kotlin-maven-plugin
+ maven-plugin
-
- org.jfrog.maven.annomojo
- maven-plugin-anno
- ${maven-plugin-anno.version}
-
org.apache.maven
maven-plugin-api
${maven.version}
+
+
+
+ org.jetbrains.kotlin
+ stdlib
+ ${project.version}
+
+
+ org.jetbrains.kotlin
+ kotlin-compiler
+ ${project.version}
+
+
+ org.jetbrains.kotlin
+ kotlin-build-tools
+ ${project.version}
+
+
+ org.jetbrains.kotlin
+ intellij-core
+ ${project.version}
+
+
+ org.jetbrains.kotlin
+ intellij-annotations
+ ${project.version}
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ asm
+ asm
+ ${asm.version}
+
+
+ asm
+ asm-tree
+ ${asm.version}
+
+
+ asm
+ asm-commons
+ ${asm.version}
+
+
+ asm
+ asm-util
+ ${asm.version}
+
+
+ org.jetbrains.kotlin
+ trove4j
+ ${project.version}
+
+
+
+ org.jetbrains.kotlin
+ picocontainer
+ ${project.version}
+
+
-
-
-
+ src/main/java
+ src/test/java
-
-
-
-
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
org.apache.maven.plugins
maven-plugin-plugin
2.9
-
-
- org.apache.maven.plugin-tools
- maven-plugin-tools-api
- 2.9
-
-
- org.jfrog.maven.annomojo
- maven-plugin-tools-anno
- ${maven-plugin-anno.version}
- runtime
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 1.6
+
+
+ package
+
+ shade
+
+
+
+
+
+ org.jetbrains.kotlin:*
+
+
+ org.jetbrains.kotlin:stdlib
+
+
+
+
+
-
-
-
- download
-
-
- jfrog-plugins
- jfrog-plugins-dist
- http://repo.jfrog.org/artifactory/plugins-releases
-
-
-
-
-
diff --git a/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerMojo.java b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerMojo.java
new file mode 100644
index 00000000000..f94c5924849
--- /dev/null
+++ b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerMojo.java
@@ -0,0 +1,30 @@
+package org.jetbrains.kotlin.maven;
+
+import org.jetbrains.jet.cli.CompilerArguments;
+
+/**
+ * Converts Kotlin to JavaScript code
+ *
+ * @goal js
+ * @phase compile
+ */
+public class K2JSCompilerMojo extends KotlinBaseMojo {
+
+ private String outFile;
+
+ @Override
+ protected void configureCompilerArguments(CompilerArguments arguments) {
+ super.configureCompilerArguments(arguments);
+ K2JSCompilerPlugin plugin = new K2JSCompilerPlugin();
+ plugin.setOutFile(outFile);
+ arguments.getCompilerPlugins().add(plugin);
+ getLog().info("Compiling Kotlin src from " + arguments.getSrc() + " to JavaScript at: " + outFile);
+ }
+
+ @Override
+ protected CompilerArguments createCompilerArguments() {
+ CompilerArguments answer = new CompilerArguments();
+ return answer;
+
+ }
+}
diff --git a/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerPlugin.java b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerPlugin.java
new file mode 100644
index 00000000000..5396e79b0d9
--- /dev/null
+++ b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JSCompilerPlugin.java
@@ -0,0 +1,79 @@
+package org.jetbrains.kotlin.maven;
+
+import com.intellij.openapi.project.Project;
+import jet.Function1;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.compiler.CompilerPlugin;
+import org.jetbrains.jet.compiler.CompilerPluginContext;
+import org.jetbrains.jet.lang.psi.JetFile;
+import org.jetbrains.jet.lang.resolve.BindingContext;
+import org.jetbrains.k2js.config.Config;
+import org.jetbrains.k2js.facade.K2JSTranslator;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import static kotlin.io.namespace.use;
+
+/**
+ * Compiles Kotlin code to JavaScript
+ */
+public class K2JSCompilerPlugin implements CompilerPlugin {
+
+ /**
+ * @required
+ * @parameter default-value="${project.build.directory}/target/js/${project.artifactId}.js"
+ */
+ private String outFile = "target/js/program.js";
+
+ public void processFiles(CompilerPluginContext context) {
+ if (context != null) {
+ Project project = context.getProject();
+ BindingContext bindingContext = context.getContext();
+ List sources = context.getFiles();
+ if (bindingContext != null && sources != null && project != null) {
+ Config config = new Config(project) {
+ @NotNull
+ @Override
+ public List getLibFiles() {
+ // TODO
+ return null;
+ }
+ };
+ K2JSTranslator translator = new K2JSTranslator(config);
+ final String code = translator.generateProgramCode(sources);
+ File file = new File(outFile);
+ File outDir = file.getParentFile();
+ if (outDir != null && !outDir.exists()) {
+ outDir.mkdirs();
+ }
+ try {
+ use(new FileWriter(file), new Function1() {
+ @Override
+ public Object invoke(FileWriter writer) {
+ try {
+ writer.write(code);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+ });
+ } catch (IOException e) {
+ System.out.println("Error: " + e);
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public String getOutFile() {
+ return outFile;
+ }
+
+ public void setOutFile(String outFile) {
+ this.outFile = outFile;
+ }
+}
diff --git a/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinBaseMojo.java b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinBaseMojo.java
new file mode 100644
index 00000000000..1e39b85a749
--- /dev/null
+++ b/libraries/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinBaseMojo.java
@@ -0,0 +1,51 @@
+package org.jetbrains.kotlin.maven;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.jetbrains.jet.cli.CompilerArguments;
+import org.jetbrains.jet.cli.KotlinCompiler;
+
+/**
+ * Abstract base class for Kotlin maven plugins
+ */
+public abstract class KotlinBaseMojo extends AbstractMojo {
+ private KotlinCompiler compiler = new KotlinCompiler();
+ private CompilerArguments arguments;
+
+ /**
+ * The source directory to compile
+ *
+ * @required
+ * @parameter default-value="${basedir}/src/main/kotlin"
+ */
+ private String src;
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ arguments = createCompilerArguments();
+
+ if (src != null) {
+ arguments.setSrc(src);
+ }
+ configureCompilerArguments(arguments);
+
+ compiler.exec(System.err, arguments);
+ }
+
+
+ /**
+ * Derived classes can create custom compiler argument implementations
+ * such as for KDoc
+ */
+ protected CompilerArguments createCompilerArguments() {
+ return new CompilerArguments();
+ }
+
+ /**
+ * Derived classes can register custom plugins or configurations
+ */
+ protected void configureCompilerArguments(CompilerArguments arguments) {
+ }
+
+}
diff --git a/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinCompileMojo.kt b/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinCompileMojo.kt
deleted file mode 100644
index e93cbddeeb1..00000000000
--- a/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinCompileMojo.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.jetbrains.kotlin.maven
-
-import org.jfrog.maven.annomojo.annotations.*
-import org.apache.maven.plugin.AbstractMojo
-
-/**
- * Kotlin compiler mojo
- */
-[MojoGoal("compile")]
-[MojoPhase( "compile" )]
-[MojoRequiresDependencyResolution( "compile" )]
-class KotlinCompileMojo() : KotlinMojoSupport() {
-
- override fun execute() {
- println("===== Kotlin maven compiler!!! src = $src")
- }
-}
\ No newline at end of file
diff --git a/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinMojoSupport.kt b/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinMojoSupport.kt
deleted file mode 100644
index c32c40b9484..00000000000
--- a/libraries/kotlin-maven-plugin/src/main/kotlin/org/jetbrains/kotlin/maven/KotlinMojoSupport.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.jetbrains.kotlin.maven
-
-import org.jfrog.maven.annomojo.annotations.*
-
-/**
- * Base class for Kotlin compiler plugins
- */
-import org.apache.maven.plugin.AbstractMojo
-import java.lang.String
-
-abstract class KotlinMojoSupport : AbstractMojo() {
-
- [MojoParameter(required = false)]
- public var src: String? = null
-}
\ No newline at end of file
diff --git a/libraries/kotlin-maven-plugin/src/test/java/org/jetbrains/kotlin/maven/MojoTest.java b/libraries/kotlin-maven-plugin/src/test/java/org/jetbrains/kotlin/maven/MojoTest.java
new file mode 100644
index 00000000000..e7ed736d099
--- /dev/null
+++ b/libraries/kotlin-maven-plugin/src/test/java/org/jetbrains/kotlin/maven/MojoTest.java
@@ -0,0 +1,10 @@
+package org.jetbrains.kotlin.maven;
+
+import org.junit.Test;
+
+public class MojoTest {
+ @Test
+ public void dummy() {
+
+ }
+}
diff --git a/libraries/kotlin-maven-plugin/src/test/kotlin/MojoTest.kt b/libraries/kotlin-maven-plugin/src/test/kotlin/MojoTest.kt
deleted file mode 100644
index a14d98d9c19..00000000000
--- a/libraries/kotlin-maven-plugin/src/test/kotlin/MojoTest.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.org.jetbrains.kotlin.maven
-
-import junit.framework.TestCase
-
-class MojoTest: TestCase() {
- fun testFoo() {
-
- }
-}
\ No newline at end of file
diff --git a/libraries/pom.xml b/libraries/pom.xml
index ad71a7cf210..a11003cbb27 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -21,6 +21,8 @@
1.1.0
2.5
2.4
+ 3.3.1
+ 11.0.2
@@ -41,6 +43,7 @@
+ kotlin-install
kunit
stdlib
kdoc