From ff9af9b348eeee7d7fe41444cfe0708edeee1d16 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Tue, 10 Apr 2012 22:08:47 +0400 Subject: [PATCH 1/5] maven-plugin: log actual compiler arguments mvn --debug prints compiler arguments --- .../kotlin/maven/KotlinCompileMojoBase.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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 81208b0f249..93442bec1f9 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 @@ -28,6 +28,8 @@ import org.jetbrains.jet.cli.KotlinCompiler; import java.io.File; import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -109,6 +111,8 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { final KotlinCompiler compiler = createCompiler(); + printCompilerArgumentsIfDebugEnabled(arguments, compiler); + final KotlinCompiler.ExitCode exitCode = compiler.exec(System.err, arguments); switch (exitCode) { @@ -120,6 +124,25 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { } } + private void printCompilerArgumentsIfDebugEnabled(CompilerArguments arguments, KotlinCompiler compiler) { + if (getLog().isDebugEnabled()) { + getLog().debug("Invoking compiler " + compiler + " with arguments:"); + try { + Field[] fields = arguments.getClass().getFields(); + for (Field f : fields) { + Object value = f.get(arguments); + if (value != null) { + getLog().debug(f.getName() + "=" + value); + } + } + getLog().debug("End of arguments"); + } + catch (Exception e) { + getLog().warn("Failed to print compiler arguments: " + e, e); + } + } + } + protected KotlinCompiler createCompiler() { return new KotlinCompiler(); } From 863042da272d99b5c1e89dc2c2bbcffa15a6c718 Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Tue, 10 Apr 2012 22:37:41 +0400 Subject: [PATCH 2/5] maven artifacts: runtime, stdlib -> kotlin-runtime, kotlin-stdlib --- libraries/docs/apidoc/pom.xml | 2 +- libraries/docs/jsdoc/pom.xml | 2 +- libraries/docs/website/pom.xml | 2 +- libraries/examples/js-example/pom.xml | 2 +- libraries/examples/kotlin-java-example/pom.xml | 2 +- libraries/kotlin-jdbc/pom.xml | 2 +- libraries/kotlin-swing/pom.xml | 2 +- libraries/kunit/pom.xml | 8 +------- libraries/stdlib/pom.xml | 4 ++-- libraries/tools/kdoc/pom.xml | 2 +- libraries/tools/kotlin-maven-plugin/pom.xml | 7 +------ libraries/tools/runtime/pom.xml | 2 +- 12 files changed, 13 insertions(+), 24 deletions(-) diff --git a/libraries/docs/apidoc/pom.xml b/libraries/docs/apidoc/pom.xml index a6fa5a195d6..eca5247cef2 100644 --- a/libraries/docs/apidoc/pom.xml +++ b/libraries/docs/apidoc/pom.xml @@ -16,7 +16,7 @@ org.jetbrains.kotlin - runtime + kotlin-runtime ${project.version} diff --git a/libraries/docs/jsdoc/pom.xml b/libraries/docs/jsdoc/pom.xml index 8492b4cfbed..cb1045ec071 100644 --- a/libraries/docs/jsdoc/pom.xml +++ b/libraries/docs/jsdoc/pom.xml @@ -20,7 +20,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/docs/website/pom.xml b/libraries/docs/website/pom.xml index d9530b356ca..684617428a3 100644 --- a/libraries/docs/website/pom.xml +++ b/libraries/docs/website/pom.xml @@ -16,7 +16,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/examples/js-example/pom.xml b/libraries/examples/js-example/pom.xml index a27efa10a43..e17de4fcc66 100644 --- a/libraries/examples/js-example/pom.xml +++ b/libraries/examples/js-example/pom.xml @@ -16,7 +16,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/examples/kotlin-java-example/pom.xml b/libraries/examples/kotlin-java-example/pom.xml index 0aa319c95cc..18256b922dd 100644 --- a/libraries/examples/kotlin-java-example/pom.xml +++ b/libraries/examples/kotlin-java-example/pom.xml @@ -19,7 +19,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/kotlin-jdbc/pom.xml b/libraries/kotlin-jdbc/pom.xml index 1fd3d33dc42..af6424cd621 100644 --- a/libraries/kotlin-jdbc/pom.xml +++ b/libraries/kotlin-jdbc/pom.xml @@ -16,7 +16,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/kotlin-swing/pom.xml b/libraries/kotlin-swing/pom.xml index 447d36b8df9..a6fd6bda568 100644 --- a/libraries/kotlin-swing/pom.xml +++ b/libraries/kotlin-swing/pom.xml @@ -16,7 +16,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/kunit/pom.xml b/libraries/kunit/pom.xml index 9560b79014e..fc2b0a1ad27 100644 --- a/libraries/kunit/pom.xml +++ b/libraries/kunit/pom.xml @@ -16,13 +16,7 @@ org.jetbrains.kotlin - runtime - ${project.version} - - - - org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/stdlib/pom.xml b/libraries/stdlib/pom.xml index 5b7452194d6..ccd4731dab4 100644 --- a/libraries/stdlib/pom.xml +++ b/libraries/stdlib/pom.xml @@ -11,12 +11,12 @@ 1.0-SNAPSHOT - stdlib + kotlin-stdlib org.jetbrains.kotlin - runtime + kotlin-runtime ${project.version} diff --git a/libraries/tools/kdoc/pom.xml b/libraries/tools/kdoc/pom.xml index fb8b60f8913..b51fb59988c 100644 --- a/libraries/tools/kdoc/pom.xml +++ b/libraries/tools/kdoc/pom.xml @@ -28,7 +28,7 @@ org.jetbrains.kotlin - stdlib + kotlin-stdlib ${project.version} diff --git a/libraries/tools/kotlin-maven-plugin/pom.xml b/libraries/tools/kotlin-maven-plugin/pom.xml index 007c2bf74b5..d55b6d69258 100644 --- a/libraries/tools/kotlin-maven-plugin/pom.xml +++ b/libraries/tools/kotlin-maven-plugin/pom.xml @@ -40,7 +40,7 @@ org.jetbrains.kotlin - runtime + kotlin-runtime ${project.version} @@ -156,11 +156,6 @@ shade - org.jetbrains.kotlin:* diff --git a/libraries/tools/runtime/pom.xml b/libraries/tools/runtime/pom.xml index 433ea00cd12..6430b3021c7 100644 --- a/libraries/tools/runtime/pom.xml +++ b/libraries/tools/runtime/pom.xml @@ -11,7 +11,7 @@ 1.0-SNAPSHOT - runtime + kotlin-runtime jar From 1a63f91cc5d0d7eb99e54f93cf50370cc9cbb97d Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Tue, 10 Apr 2012 22:38:31 +0400 Subject: [PATCH 3/5] maven plugin: exclude kotlin-runtime jar from classpath passed to compiler --- .../kotlin/maven/KotlinCompileMojoBase.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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 93442bec1f9..34dc2de6552 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 @@ -180,7 +180,13 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { final ArrayList classpathList = new ArrayList(classpath); if (classpathList.remove(output)) { - log.debug("Removed target directory from classpath (" + output + ")"); + log.debug("Removed target directory from compiler classpath (" + output + ")"); + } + + final String runtime = getRuntimeFromClassPath(classpath); + if (runtime != null) { + log.debug("Removed Kotlin runtime from compiler classpath (" + runtime + ")"); + classpathList.remove(runtime); } final String classPathString = Joiner.on(File.pathSeparator).join(classpathList); @@ -194,6 +200,21 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { log.debug("Using jdk headers from " + arguments.jdkHeaders); } + // TODO: Make a better runtime detection or get rid of it entirely + private String getRuntimeFromClassPath(List classpath) { + for (String item : classpath) { + final int lastSeparatorIndex = item.lastIndexOf(File.separator); + + if (lastSeparatorIndex < 0) + continue; + + if (item.startsWith("kotlin-runtime-", lastSeparatorIndex + 1) && item.endsWith(".jar")) + return item; + } + + return null; + } + private File jdkHeadersPath; protected File getJdkHeaders() { From 8baf7f50c1595b91045c8c9e15c7916cf69a3a33 Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Tue, 10 Apr 2012 23:26:45 +0400 Subject: [PATCH 4/5] don't set empty classpath --- .../jetbrains/kotlin/maven/KotlinCompileMojoBase.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 34dc2de6552..b044a239257 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 @@ -29,7 +29,6 @@ import org.jetbrains.jet.cli.KotlinCompiler; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -189,9 +188,11 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { classpathList.remove(runtime); } - final String classPathString = Joiner.on(File.pathSeparator).join(classpathList); - log.info("Classpath: " + classPathString); - arguments.setClasspath(classPathString); + if (classpathList.size() > 0) { + final String classPathString = Joiner.on(File.pathSeparator).join(classpathList); + log.info("Classpath: " + classPathString); + arguments.setClasspath(classPathString); + } log.info("Classes directory is " + output); arguments.setOutputDir(output); From 1752b6f13ea436054a706c7c02cad997564eaa77 Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Tue, 10 Apr 2012 23:44:56 +0400 Subject: [PATCH 5/5] maven plugin: disable runtime hiding from compiler classpath --- .../jetbrains/kotlin/maven/KotlinCompileMojoBase.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 b044a239257..dcdd3a1f4f2 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 @@ -182,11 +182,11 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo { log.debug("Removed target directory from compiler classpath (" + output + ")"); } - final String runtime = getRuntimeFromClassPath(classpath); - if (runtime != null) { - log.debug("Removed Kotlin runtime from compiler classpath (" + runtime + ")"); - classpathList.remove(runtime); - } +// final String runtime = getRuntimeFromClassPath(classpath); +// if (runtime != null) { +// log.debug("Removed Kotlin runtime from compiler classpath (" + runtime + ")"); +// classpathList.remove(runtime); +// } if (classpathList.size() > 0) { final String classPathString = Joiner.on(File.pathSeparator).join(classpathList);