Erstellen Sie ein Java- und Kotlin-Projekt mit Maven

Erstellen Sie ein Java- und Kotlin-Projekt mit Maven

1. Einführung

In diesem kurzen Tutorial erfahren Sie, wie Sie einMaven -Projekt einrichten, das sowohlJavaals auchKotlinQuellen verarbeitet.

Wir erstellen zunächst ein Projekt nur fürJava-Quellen. Wir werden dann daskotlin-maven-plugin to-HandleKotlin as gut hinzufügen.

Und schließlich werden wir einige Dummy-Klassen hinzufügen, unsere Anwendung verpacken und testen, ob alles wie erwartet funktioniert.

2. Erstellen Sie ein Java-Projekt mit Maven

Zunächstlet’s create a straightforward Java project with Maven:

maven-java-kotlin
jar


    1.8



    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.1
            
                ${java.version}
                ${java.version}
            
        
    

Diesepom-Datei enthält alles, was wir brauchen, umJava-Quellen zu kompilieren und in einejar-Datei zu packen.

3. Füge das Kotlin Maven Plugin hinzu

Jetzt müssen wir die Dateipomo optimieren, dass sie auch die Quellen vonKotlinverarbeiten kann.

Fügen wir zunächstkotlin.version zu unseren Eigenschaften und kotlin-stdlib-jdk8 to our dependencies hinzu. Auf diese Weise haben wir Zugriff auf die Funktionen vonKotlin:


    1.8
    1.2.51



    
        org.jetbrains.kotlin
        kotlin-stdlib-jdk8
        ${kotlin.version}
    

Dannwe need to add the kotlin-maven-plugin zu unserenMaven Plugins.

Wir werden es so konfigurieren, dass es sowohl die Ziele voncompileals auchtest-compilebehandelt und ihm sagt, wo sich unsere Quellen befinden.

Konventionell behalten wir die Quellen vonJava undKotlinin verschiedenen Verzeichnissen, obwohl wir sie alle in dasselbe Verzeichnis einfügen könnten:


    kotlin-maven-plugin
    org.jetbrains.kotlin
    ${kotlin.version}
    
        
            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
                
            
        
    

Dies ist fast das Ende der Konfiguration. Wir müssenadapt maven-compiler-plugin configuration as we need Kotlin sources to be compiled before Java sources.

Häufig werden die Plugins vonMavengemäß der Deklarationsreihenfolge ausgeführt. Also sollten wirmaven-compiler-plugin nachkotlin-maven-plugin setzen. Ersteres hat jedoch zwei spezifische Ausführungen, die während der Phasen vor allem anderen ausgeführt werden:default-compile unddefault-testCompile.

Wir müssen sie deaktivieren und stattdessenjava-compile undjava-test-compile aktivieren, um sicherzustellen, dass die Ausführung vonkotlin-maven-pluginvormaven-compiler-plugin: erfolgt


    org.apache.maven.plugins
    maven-compiler-plugin
    3.1
    
        ${java.version}
        ${java.version}
    
    
        
            default-compile
            none
        
        
            default-testCompile
            none
        
        
            java-compile
            compile
            
                compile
            
        
        
            java-test-compile
            test-compile
            
                testCompile
            
        
    

Wir können sehen, dass die Standardausführungen mit Phasenone deaktiviert sind undJava-spezifische Ausführungen ancompile undtest-compile Phasen gebunden sind.

4. Sag 'Hallo Welt!' mit Java und Kotlin

Nachdem wir alles richtig eingerichtet haben, sagen wir der Welt Hallo ... vonJava undKotlin.

Erstellen Sie dazu eineApplication-Klasse mit einermain() -Smethod. Diese Methode ruft gemäß ihrem ersten Argument entweder eineJava- oder eineKotlin-Klasse auf:

public class Application {

    static String JAVA = "java";
    static String KOTLIN = "kotlin";

    public static void main(String[] args) {
        String language = args[0];
        switch (language) {
            case JAVA:
                new JavaService().sayHello();
                break;
            case KOTLIN:
                new KotlinService().sayHello();
                break;
            default:
                // Do nothing
                break;
        }
    }
}

Die KlassenJavaService undKotlinService sagen einfach "Hallo Welt!":

public class JavaService {

    public void sayHello() {
        System.out.println("Java says 'Hello World!'");
    }

}
class KotlinService {

    fun sayHello() {
        System.out.println("Kotlin says 'Hello World!'")
    }

}

Wir können unsere Anwendung jetzt kompilieren und verpacken, indem wir den Befehlmvn packageaufrufen.

Testen Sie das produzierte Glas, indem Sie die folgenden Befehle in einem Terminal ausführen:

java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar path.to.your.Class "java"

Wie wir sehen können, ruft dies die KlasseJavaServiceauf, die auf der Konsole gedruckt wird: "Java sagt" Hallo Welt! ".

java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar path.to.your.Class "kotlin"

Und dieser nenntKotlinService Klasse, die "Kotlin sagt 'Hallo Welt!'" Druckt.

5. Fazit

In diesem Artikel haben wir uns darauf konzentriert, wie ein Maven-Projekt erstellt wird, das sowohlJava als auchKotlin sources verarbeitet und injar kompiliert und verpackt.

Der vollständige Code kann inover on GitHub überprüft werden.