diff --git a/libraries/pom.xml b/libraries/pom.xml index 16602a6edf0..8625f8f5ad5 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -84,6 +84,7 @@ tools/kotlin-maven-noarg tools/kotlin-maven-sam-with-receiver tools/kotlin-maven-serialization + tools/kotlin-maven-lombok tools/kotlin-bom diff --git a/libraries/tools/kotlin-maven-lombok/pom.xml b/libraries/tools/kotlin-maven-lombok/pom.xml new file mode 100755 index 00000000000..c1c4303e7f6 --- /dev/null +++ b/libraries/tools/kotlin-maven-lombok/pom.xml @@ -0,0 +1,102 @@ + + + + 4.0.0 + + 3.0.5 + ${basedir}/../../../plugins/lombok/lombok-compiler-plugin/src + ${basedir}/../../../plugins/lombok/lombok-compiler-plugin/resources + ${basedir}/src/main/kotlin + + + + org.jetbrains.kotlin + kotlin-project + 1.5.255-SNAPSHOT + ../../pom.xml + + + kotlin-maven-lombok + jar + + Lombok plugin for Maven + + + + org.jetbrains.kotlin + kotlin-stdlib + ${project.version} + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${project.version} + provided + + + + + + + ${lombok.resources} + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + generate-sources + + add-source + + + + ${lombok.src} + ${lombok.maven.plugin.src} + + + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${project.version} + + + + compile + compile + + compile + + + + + + org.codehaus.plexus + plexus-component-metadata + 1.7.1 + + + process-classes + + generate-metadata + + + + process-test-classes + + generate-test-metadata + + + + + + + diff --git a/libraries/tools/kotlin-maven-lombok/src/main/kotlin/LombokMavenPluginExtensions.kt b/libraries/tools/kotlin-maven-lombok/src/main/kotlin/LombokMavenPluginExtensions.kt new file mode 100644 index 00000000000..553925d64ab --- /dev/null +++ b/libraries/tools/kotlin-maven-lombok/src/main/kotlin/LombokMavenPluginExtensions.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.lombok + +import org.apache.maven.plugin.* +import org.apache.maven.project.* +import org.codehaus.plexus.component.annotations.* +import org.codehaus.plexus.logging.* +import org.jetbrains.kotlin.maven.* + +val LOMBOK_COMPILER_PLUGIN_ID = "org.jetbrains.kotlin.lombok" + +@Component(role = KotlinMavenPluginExtension::class, hint = "kotlin-lombok") +class KotlinLombokMavenPluginExtension : KotlinMavenPluginExtension { + @Requirement + lateinit var logger: Logger + + override fun getCompilerPluginId() = LOMBOK_COMPILER_PLUGIN_ID + + override fun isApplicable(project: MavenProject, execution: MojoExecution) = true + + override fun getPluginOptions(project: MavenProject, execution: MojoExecution): List { + logger.debug("Loaded Maven plugin " + javaClass.name) + return emptyList() + } +} + diff --git a/libraries/tools/kotlin-maven-plugin-test/pom.xml b/libraries/tools/kotlin-maven-plugin-test/pom.xml index c584c0f5117..8c7c4e2e0d8 100644 --- a/libraries/tools/kotlin-maven-plugin-test/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/pom.xml @@ -120,6 +120,7 @@ org.jetbrains.kotlin:kotlin-maven-plugin:${project.version} org.jetbrains.kotlin:kotlin-maven-allopen:${project.version} org.jetbrains.kotlin:kotlin-maven-noarg:${project.version} + org.jetbrains.kotlin:kotlin-maven-lombok:${project.version} org.jetbrains.kotlin:kotlin-maven-sam-with-receiver:${project.version} org.jetbrains.kotlin:kotlin-annotation-processing-maven:${project.version} org.jetbrains.kotlin:kotlin-script-runtime:${project.version} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/lombok.config b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/lombok.config new file mode 100644 index 00000000000..ba3e71620c0 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/lombok.config @@ -0,0 +1,3 @@ +config.stopBubbling = true + +lombok.getter.noIsPrefix = true diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/pom.xml new file mode 100644 index 00000000000..d645c1a4a5f --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/pom.xml @@ -0,0 +1,125 @@ + + + 4.0.0 + + org.jetbrains.kotlin + test-lombok-simple + 1.0-SNAPSHOT + + + UTF-8 + 1.8 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + ${project.basedir}/src/main/java + ${project.basedir}/src/test/java + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + kotlin-lombok + + + + + + + + + compile + + compile + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/main/java + + + + + test-compile + test-compile + + + ${project.basedir}/src/test/kotlin + ${project.basedir}/src/test/java + + + + + + + org.jetbrains.kotlin + kotlin-maven-lombok + ${kotlin.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + + + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + org.projectlombok + lombok + 1.18.20 + provided + + + + diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/JavaUsage.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/JavaUsage.java new file mode 100644 index 00000000000..80b02373c7d --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/JavaUsage.java @@ -0,0 +1,16 @@ +package lab2; + +public class JavaUsage { + + public static void main(String[] args) { + SomePojo obj = new SomePojo(); + obj.setAge(12); + boolean v = obj.getHuman(); + obj.setHuman(!v); + System.out.println(obj); + } + + public static void cycleUsage() { + new SomeKotlinClass().call(); + } +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/ManualPojo.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/ManualPojo.java new file mode 100644 index 00000000000..e619ddf9b63 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/ManualPojo.java @@ -0,0 +1,21 @@ +package lab2; + +import org.jetbrains.annotations.Nullable; + +public class ManualPojo { + + public String getFoo() { + return null; + } + +// @NotNull + public String getBar() { + return "234"; + } + + @Nullable + public Object someMethod() { + return null; + } + +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomeData.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomeData.java new file mode 100644 index 00000000000..c0cee2110cd --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomeData.java @@ -0,0 +1,10 @@ +package lab2; + +import lombok.Data; + +@Data +public class SomeData { + private String name; + private int age; + private boolean human; +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomePojo.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomePojo.java new file mode 100644 index 00000000000..6cf4e7b1013 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/java/lab2/SomePojo.java @@ -0,0 +1,17 @@ +package lab2; + +import lombok.Getter; +import lombok.NonNull; +import lombok.Setter; +import lombok.ToString; + +@Getter @Setter @ToString +public class SomePojo { + + @NonNull + private String name; + private int age; + + private boolean human; + +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/kotlin/lab2/KotlinUsage.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/kotlin/lab2/KotlinUsage.kt new file mode 100644 index 00000000000..39cfad30272 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/src/main/kotlin/lab2/KotlinUsage.kt @@ -0,0 +1,29 @@ +package lab2 + +fun main() { + println("something") + val obj = SomePojo() + obj.name = "test" + val s: String = obj.name + obj.age = 12 + val v = obj.human + obj.human = !v + println(obj) +// +// val manualPojo = ManualPojo() +// +// val foo: String? = manualPojo.getFoo() +// val res: Any? = manualPojo.someMethod() +// + val ddd = SomeData() + + JavaUsage.cycleUsage() +} + +class SomeKotlinClass { + fun call() { + val ddd = SomeData() + ddd.age = 12 + println(ddd) + } +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh new file mode 100644 index 00000000000..fcc28b94650 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh @@ -0,0 +1,6 @@ +import java.io.*; + +File file = new File(basedir, "target/test-lombok-simple-1.0-SNAPSHOT.jar"); +if (!file.exists() || !file.isFile()) { + throw new FileNotFoundException("Could not find generated JAR: " + file); +} 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 15f543099a9..45b2ae3d875 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 @@ -312,9 +312,9 @@ public abstract class KotlinCompileMojoBase e try { KotlinMavenPluginExtension extension = container.lookup(KotlinMavenPluginExtension.class, pluginName); loadedPlugins.put(pluginName, extension); - getLog().debug("Got plugin instance" + pluginName + " of type " + extension.getClass().getName()); + getLog().debug("Got plugin instance " + pluginName + " of type " + extension.getClass().getName()); } catch (ComponentLookupException e) { - getLog().debug("Unable to get plugin instance" + pluginName); + getLog().debug("Unable to get plugin instance " + pluginName); throw new PluginNotFoundException(pluginName, e); } }