diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index ac37bd5be84..e1519a90928 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -58,7 +58,7 @@ public inline fun String.toCharList(): List = toCharArray().toList() public inline fun String.format(format : String, vararg args : Any?) : String = java.lang.String.format(format, args).sure() -public inline fun String.split(regex : String) : Array? = (this as java.lang.String).split(regex) +public inline fun String.split(regex : String) : Array = (this as java.lang.String).split(regex) as Array public inline fun String.substring(beginIndex : Int) : String = (this as java.lang.String).substring(beginIndex).sure() diff --git a/libraries/tools/kdoc/ApiDocsModule.kt b/libraries/tools/kdoc/ApiDocsModule.kt index 95bda2de587..90aa07b45c4 100644 --- a/libraries/tools/kdoc/ApiDocsModule.kt +++ b/libraries/tools/kdoc/ApiDocsModule.kt @@ -2,7 +2,7 @@ import kotlin.modules.* fun project() { module("apidocs") { - classpath += "../lib/junit-4.9.jar" + classpath += "../../lib/junit-4.9.jar" addSourceFiles("../../stdlib/src") addSourceFiles("../../kunit/src/main/kotlin") 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; } }