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}
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}
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.