diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/expected.log b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/expected.log index 9f24154b2ca..9df2352dfd5 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/expected.log +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/expected.log @@ -1,15 +1,17 @@ [INFO] Kotlin Compiler version @snapshot@ [INFO] Compiling Kotlin sources from [/test-extension/src/main/kotlin] [INFO] Module name is test-extension +[WARNING] Some JAR files in the classpath have the Kotlin Runtime library bundled into them. This may cause difficult to debug problems if there's a different version @snapshot@ the Kotlin Runtime library in the classpath. Consider removing these libraries from the classpath or use '-Xskip-runtime-version-check' to suppress this warning +[WARNING] /local-repo/org/jetbrains/kotlin/kotlin-compiler/1.1-SNAPSHOT/kotlin-compiler-1.1-SNAPSHOT.jar: (-1, -1) Library has Kotlin runtime bundled into it [INFO] Kotlin Compiler version @snapshot@ [WARNING] No sources found skipping Kotlin compile [INFO] Kotlin Compiler version @snapshot@ [INFO] Compiling Kotlin sources from [/use-test-extension/src/main/kotlin] [INFO] Module name is use-test-extension [INFO] Applicability test for project use-test-extension +[INFO] Applied plugin: 'test-me' [INFO] Configuring test plugin with arguments -[INFO] Options for plugin test-me: [plugin:org.jetbrains.kotlin.test.test-plugin:test-option=my-special-value] [INFO] Plugin applied [INFO] Option value: my-special-value [INFO] Kotlin Compiler version @snapshot@ -[WARNING] No sources found skipping Kotlin compile +[WARNING] No sources found skipping Kotlin compile \ No newline at end of file diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/pom.xml index 4ac87a3899b..4b108ab5719 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/pom.xml @@ -6,7 +6,7 @@ org.jetbrains.kotlin kotlin-compiler-extensions-test - 1.1-SNAPSHOT + 1.0-SNAPSHOT test-extension use-test-extension diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/pom.xml index 5664b741ced..8f564844199 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/pom.xml @@ -5,16 +5,12 @@ kotlin-compiler-extensions-test org.jetbrains.kotlin - 1.1-SNAPSHOT + 1.0-SNAPSHOT 4.0.0 test-extension - - 1.1-SNAPSHOT - - org.jetbrains.kotlin diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/src/main/kotlin/org/jetbrains/kotlin/test/MavenPluginComponent.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/src/main/kotlin/org/jetbrains/kotlin/test/MavenPluginComponent.kt index 522068ffbd1..9a993b96c99 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/src/main/kotlin/org/jetbrains/kotlin/test/MavenPluginComponent.kt +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/test-extension/src/main/kotlin/org/jetbrains/kotlin/test/MavenPluginComponent.kt @@ -23,6 +23,7 @@ class MavenPluginComponent : KotlinMavenPluginExtension { logger.info("Configuring test plugin with arguments") return listOf(PluginOption( + "test-me", TestCommandLineProcessor.TestPluginId, TestCommandLineProcessor.MyTestOption.name, "my-special-value")) diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/use-test-extension/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/use-test-extension/pom.xml index 58c44c1ed71..dba7c5ac342 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/use-test-extension/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-plugins/use-test-extension/pom.xml @@ -5,17 +5,12 @@ kotlin-compiler-extensions-test org.jetbrains.kotlin - 1.1-SNAPSHOT + 1.0-SNAPSHOT 4.0.0 use-test-extension - - - 1.1-SNAPSHOT - - org.jetbrains.kotlin 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 cf62e5d2907..31b2b41de1f 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 @@ -328,10 +328,13 @@ public abstract class KotlinCompileMojoBase e String pluginName = pluginEntry.getKey(); KotlinMavenPluginExtension plugin = pluginEntry.getValue(); + // applied plugin (...) to info() if (plugin.isApplicable(project, mojoExecution)) { + getLog().info("Applied plugin: '" + pluginName + "'"); List optionsForPlugin = plugin.getPluginOptions(project, mojoExecution); - getLog().info("Options for plugin " + pluginName + ": " + optionsForPlugin); - pluginOptions.addAll(optionsForPlugin); + if (!optionsForPlugin.isEmpty()) { + pluginOptions.addAll(optionsForPlugin); + } } } @@ -339,6 +342,34 @@ public abstract class KotlinCompileMojoBase e pluginOptions.addAll(parseUserProvidedPluginOptions(this.pluginOptions, plugins)); } + Map> optionsByPluginName = new LinkedHashMap>(); + for (PluginOption option : pluginOptions) { + List optionsForPlugin = optionsByPluginName.get(option.pluginName); + if (optionsForPlugin == null) { + optionsForPlugin = new ArrayList(); + optionsByPluginName.put(option.pluginName, optionsForPlugin); + } + + optionsForPlugin.add(option); + } + + for (Map.Entry> entry : optionsByPluginName.entrySet()) { + assert !entry.getValue().isEmpty(); + + String pluginName = entry.getValue().get(0).pluginName; + + StringBuilder renderedOptions = new StringBuilder("["); + for (PluginOption option : entry.getValue()) { + if (renderedOptions.length() > 1) { + renderedOptions.append(", "); + } + renderedOptions.append(option.key).append(": ").append(option.value); + } + renderedOptions.append("]"); + + getLog().debug("Options for plugin " + pluginName + ": " + renderedOptions); + } + return pluginOptions; } @@ -363,7 +394,7 @@ public abstract class KotlinCompileMojoBase e throw new PluginNotFoundException(pluginName); } - pluginOptions.add(new PluginOption(plugin.getCompilerPluginId(), key, value)); + pluginOptions.add(new PluginOption(pluginName, plugin.getCompilerPluginId(), key, value)); } return pluginOptions; diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/PluginOption.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/PluginOption.java index 7f7674decdc..867cdee05f8 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/PluginOption.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/PluginOption.java @@ -1,11 +1,17 @@ package org.jetbrains.kotlin.maven; public class PluginOption { + /** The plugin name in Maven, e.g. "all-open" */ + public final String pluginName; + + /** The compiler plugin identifier, e.g. "org.jetbrains.kotlin.allopen" */ public final String pluginId; + public final String key; public final String value; - public PluginOption(String pluginId, String key, String value) { + public PluginOption(String pluginName, String pluginId, String key, String value) { + this.pluginName = pluginName; this.pluginId = pluginId; this.key = key; this.value = value;