Stvorite Java i Kotlin projekt s Mavenom

1. Uvod

U ovom brzom vodiču vidjet ćemo kako postaviti a Maven rukovanje projektima oboje Java i Kotlin izvori.

Prvo ćemo izraditi projekt za Java samo izvori. Zatim ćemo dodati kotlin-maven-plugin rukovati Kotlin također.

I na kraju, dodati ćemo neke lažne klase, spakirati našu aplikaciju i testirati radi li sve kako se očekivalo.

2. Stvorite Java projekt s Mavenom

Kao prvo, stvorimo izravnu Java projekt sa Maven:

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

Ovaj pom datoteka sadrži sve što je potrebno za kompajliranje Java izvore i spakirajte ih u staklenka datoteka.

3. Dodajte dodatak Kotlin Maven

Sada moramo ovo podesiti pom datoteku tako da može rukovati Kotlin izvori također.

Prvo dodajmo kotlin.verzija našim imanjima ikotlin-stdlib-jdk8 našim ovisnostima. Na ovaj način imat ćemo pristup Kotlin značajke:

 1,8 1,2,51 org.jetbrains.kotlin kotlin-stdlib-jdk8 $ {kotlin.version} 

Zatim, moramo dodati kotlin-maven-plugin našem Maven dodaci.

Konfigurirat ćemo ga da obrađuje oboje sastaviti i test-sastaviti ciljeva, govoreći mu gdje pronaći naše izvore.

Po dogovoru držimo Java i Kotlin izvore u različitim direktorijima, premda bismo ih mogli staviti u isti:

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

Ovo je skoro kraj konfiguracije. Moramo prilagoditi maven-compiler-plugin konfiguracija po potrebi Kotlin izvori koji će se prethodno sastaviti Java izvori.

Često, Maven izvršenja dodataka događaju se prema redoslijedu deklaracije. Pa bismo trebali smjestiti maven-compiler-plugin nakon kotlin-maven-plugin. Ali prva ima dvije specifične egzekucije koje se izvršavaju prije svega u fazama: zadana-kompajlirati i default-testCompile.

Moramo ih onemogućiti i omogućiti java-kompajlirati i java-test-kompajlirati umjesto da to osigura kotlin-maven-plugin izvršenje će se dogoditi i prije dodatak za maven-compiler:

 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 

Vidimo da su zadana izvršavanja onemogućena pomoću faze nijedna, i Java-određena su pogubljenja sastaviti i test-sastaviti faze.

4. Recite 'Hello World!' I s Javom i s Kotlinom

Sad kad smo sve ispravno postavili, pozdravimo svijet ... od oboje Java i Kotlin.

Da bismo to učinili, stvorimo Primjena razred s a glavni() metoda. Ova metoda će pozvati a Java ili a Kotlin razred prema prvom argumentu:

aplikacija javne klase {static String JAVA = "java"; statički niz KOTLIN = "kotlin"; public static void main (String [] args) {Jezik niza = args [0]; switch (jezik) {case JAVA: nova JavaService (). sayHello (); pauza; slučaj KOTLIN: novi KotlinService (). sayHello (); pauza; zadana vrijednost: // Nemojte ništa prekidati; }}}

The JavaService i KotlinService razredi jednostavno govore „Zdravo svijete!“:

javna klasa JavaService {public void sayHello () {System.out.println ("Java kaže 'Hello World!'"); }}
class KotlinService {fun sayHello () {System.out.println ("Kotlin kaže 'Pozdrav svijetu!")}}

Sada možemo sastaviti i spakirati našu aplikaciju pozivom mvn paket naredba.

Isprobajmo proizvedeni jar izvršavanjem sljedećih naredbi u terminalu:

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

Kao što vidimo, ovo naziva JavaService klasa koja se ispisuje na konzolu "Java kaže" Zdravo svijete! ".

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

I ovaj zove KotlinService klase, koja ispisuje "Kotlin kaže" Zdravo svijete! ".

5. Zaključak

U ovom smo se članku usredotočili na to kako stvoriti Maven projekt koji obrađuje oboje Java i Kotlin izvore, prikupljajući ih i pakirajući u staklenka.

Cjelokupni kod možete pregledati na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found