Maak een Java- en Kotlin-project met Maven

1. Inleiding

In deze korte tutorial zullen we zien hoe u een Maven projectafhandeling beide Java en Kotlin bronnen.

We maken eerst een project voor Java alleen bronnen. We zullen dan het kotlin-maven-plugin ermee omgaan Kotlin ook.

En tot slot zullen we enkele dummy-klassen toevoegen, onze applicatie verpakken en testen of alles werkt zoals verwacht.

2. Maak een Java-project met Maven

Allereerst, laten we een eenvoudig Java project met Maven:

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

Dit pom bestand bevat alles wat we nodig hebben om te compileren Java bronnen en verpak ze in een pot het dossier.

3. Voeg de Kotlin Maven-plug-in toe

Nu moeten we dit afstemmen pom bestand zodat het Kotlin bronnen ook.

Laten we eerst toevoegen kotlin.version naar onze eigendommen enkotlin-stdlib-jdk8 aan onze afhankelijkheden. Op deze manier hebben we toegang tot Kotlin Kenmerken:

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

Dan, we moeten de kotlin-maven-plugin naar onze Maven plug-ins.

We zullen het configureren om beide aan te kunnen compileren en test-compileren doelen, door te vertellen waar we onze bronnen kunnen vinden.

Volgens afspraak houden we ons aan Java en Kotlin bronnen in verschillende mappen, hoewel we ze allemaal in dezelfde map zouden kunnen plaatsen:

 kotlin-maven-plugin org.jetbrains.kotlin $ {kotlin.version} compileren compileren $ {project.basedir} / src / main / kotlin $ {project.basedir} / src / main / java test-compileren test-compileren $ { project.basedir} / src / test / kotlin $ {project.basedir} / src / test / java 

Dit is bijna het einde van de configuratie. We moeten zich aanpassen maven-compiler-plugin configuratie zoals we nodig hebben Kotlin bronnen die eerder moeten worden gecompileerd Java bronnen.

Vaak, Maven plug-ins worden uitgevoerd volgens de volgorde van de aangifte. Dus we moeten plaatsen maven-compiler-plugin na kotlin-maven-plugin. Maar de eerste heeft twee specifieke uitvoeringen die tijdens de fasen vóór al het andere worden uitgevoerd: default-compileren en default-testCompile.

We moeten ze uitschakelen en inschakelen java-compileren en java-test-compileren in plaats daarvan om ervoor te zorgen kotlin-maven-plugin uitvoering zal eerder plaatsvinden maven-compiler-plugin:

 org.apache.maven.plugins maven-compiler-plugin 3.1 $ {java.version} $ {java.version} standaard-compileren geen standaard-test Compileren geen java-compileren compileren compileren java-test-compileren test-compileren testCompileren 

We kunnen zien dat de standaarduitvoeringen zijn uitgeschakeld met behulp van phase geen, en Java-specifieke executies zijn gebonden aan compileren en test-compileren fasen.

4. Zeg 'Hallo wereld!' Met zowel Java als Kotlin

Nu we alles correct hebben ingesteld, laten we de wereld gedag zeggen… van beide Java en Kotlin.

Om dat te doen, maken we een Toepassing klas met een hoofd() methode. Deze methode roept een Java of een Kotlin klasse volgens zijn eerste argument:

openbare klasse Applicatie {statische String JAVA = "java"; statische String KOTLIN = "kotlin"; public static void main (String [] args) {String language = args [0]; switch (taal) {case JAVA: nieuwe JavaService (). sayHello (); breken; case KOTLIN: nieuwe KotlinService (). sayHello (); breken; default: // Niets breken; }}}

De JavaService en KotlinService klassen zeggen gewoon "Hallo wereld!":

openbare klasse JavaService {openbare void sayHello () {System.out.println ("Java zegt 'Hallo wereld!'"); }}
class KotlinService {fun sayHello () {System.out.println ("Kotlin zegt 'Hello World!'")}}

We kunnen onze applicatie nu compileren en verpakken door te bellen mvn-pakket opdracht.

Laten we de geproduceerde jar testen door de volgende opdrachten in een terminal uit te voeren:

java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar pad.naar.uw.klasse "java"

Zoals we kunnen zien, roept dit de JavaService klasse die naar de console afdrukt "Java zegt‘ Hallo wereld! '”.

java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar pad.naar.uw.klasse "kotlin"

En deze roept KotlinService klasse, die "Kotlin zegt‘ Hallo wereld! '' 'afdrukt.

5. Conclusie

In dit artikel hebben we ons gericht op het maken van een Maven-project dat beide afhandelt Java en Kotlin bronnen, compileren en verpakken in een pot.

De volledige code kan worden bekeken op GitHub.