diff --git a/libraries/tools/kotlin-maven-plugin/pom.xml b/libraries/tools/kotlin-maven-plugin/pom.xml
index 9f57ea5de85..007c2bf74b5 100644
--- a/libraries/tools/kotlin-maven-plugin/pom.xml
+++ b/libraries/tools/kotlin-maven-plugin/pom.xml
@@ -92,25 +92,25 @@
trove4j
${project.version}
-
+
org.jetbrains.kotlin
picocontainer
${project.version}
-
+
@@ -124,6 +124,14 @@
src/main/java
src/test/java
+
+
+
+ ${kotlin-sdk}/lib/alt
+ false
+
+
+
org.apache.maven.plugins
diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java
index c15ed7a6d5f..81208b0f249 100644
--- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java
+++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java
@@ -17,6 +17,8 @@
package org.jetbrains.kotlin.maven;
import com.google.common.base.Joiner;
+import com.google.common.io.Files;
+import com.google.common.io.Resources;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -25,6 +27,8 @@ import org.jetbrains.jet.cli.CompilerArguments;
import org.jetbrains.jet.cli.KotlinCompiler;
import java.io.File;
+import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
@@ -133,8 +137,8 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo {
*/
protected abstract void configureCompilerArguments(CompilerArguments arguments) throws MojoExecutionException;
- protected static void configureBaseCompilerArguments(Log log, CompilerArguments arguments, String module,
- List sources, List classpath, String output) throws MojoExecutionException {
+ protected void configureBaseCompilerArguments(Log log, CompilerArguments arguments, String module,
+ List sources, List classpath, String output) throws MojoExecutionException {
// don't include runtime, it should be in maven dependencies
arguments.mode = "stdlib";
@@ -162,5 +166,42 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo {
log.info("Classes directory is " + output);
arguments.setOutputDir(output);
+
+ arguments.jdkHeaders = getJdkHeaders().getPath();
+ log.debug("Using jdk headers from " + arguments.jdkHeaders);
+ }
+
+ private File jdkHeadersPath;
+
+ protected File getJdkHeaders() {
+ if (jdkHeadersPath != null)
+ return jdkHeadersPath;
+
+ try {
+ jdkHeadersPath = extractJdkHeaders();
+
+ if (jdkHeadersPath == null)
+ throw new RuntimeException("Can't find kotlin jdk headers in maven plugin resources");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ return jdkHeadersPath;
+ }
+
+ private File extractJdkHeaders() throws IOException {
+ final String kotlin_jdk_headers = "kotlin-jdk-headers.jar";
+
+ final URL jdkHeadersResource = Resources.getResource(kotlin_jdk_headers);
+ if (jdkHeadersResource == null)
+ return null;
+
+ final File jdkHeadersTempDir = Files.createTempDir();
+ jdkHeadersTempDir.deleteOnExit();
+
+ final File jdkHeadersFile = new File(jdkHeadersTempDir, kotlin_jdk_headers);
+ Files.copy(Resources.newInputStreamSupplier(jdkHeadersResource), jdkHeadersFile);
+
+ return jdkHeadersFile;
}
}