Crea un progetto Java e Kotlin con Maven

1. Introduzione

In questo rapido tutorial, vedremo come impostare un progetto Maven che gestisca sia sorgenti Java che Kotlin .

Per prima cosa creeremo un progetto solo per sorgenti Java . Aggiungeremo quindi il plug-in kotlin-maven per gestire anche Kotlin .

Infine, aggiungeremo alcune classi fittizie, impacchetteremo la nostra applicazione e testeremo se tutto funziona come previsto.

2. Creare un progetto Java con Maven

Prima di tutto, creiamo un semplice progetto Java con Maven :

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

Questo file pom contiene tutto ciò di cui abbiamo bisogno per compilare i sorgenti Java e impacchettarli in un file jar .

3. Aggiungi Kotlin Maven Plugin

Ora dobbiamo mettere a punto questo file pom in modo che possa gestire anche i sorgenti Kotlin .

Aggiungiamo prima kotlin.version alle nostre proprietà e kotlin-stdlib-jdk8 alle nostre dipendenze . In questo modo avremo accesso alle funzionalità di Kotlin :

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

Quindi, dobbiamo aggiungere il plugin kotlin-maven-plugin ai nostri plugin Maven .

Lo configureremo per gestire sia gli obiettivi di compilazione che di test-compilazione , dicendogli dove trovare i nostri sorgenti.

Per convenzione, manteniamo i sorgenti Java e Kotlin in directory diverse, anche se potremmo metterli tutti nella stessa:

 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     

Questa è quasi la fine della configurazione. Dobbiamo adattare la configurazione del plugin del compilatore maven poiché abbiamo bisogno che i sorgenti Kotlin siano compilati prima dei sorgenti Java .

Spesso, le esecuzioni dei plugin Maven avvengono secondo l'ordine di dichiarazione. Quindi dovremmo posizionare maven-compiler-plugin dopo kotlin-maven-plugin . Ma il primo ha due esecuzioni specifiche che vengono eseguite prima di ogni altra cosa durante le fasi: default-compile e default-testCompile .

Dobbiamo disabilitarli e abilitare java-compile e java-test-compile invece per assicurarci che l' esecuzione di kotlin-maven-plugin avvenga prima di maven-compiler-plugin:

 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    

Possiamo vedere che le esecuzioni predefinite sono disabilitate usando la fase none e le esecuzioni specifiche di Java sono vincolate alle fasi di compilazione e test-compilazione .

4. Dì "Hello World!" Con Java e Kotlin

Ora che abbiamo impostato tutto correttamente, salutiamo il mondo ... sia da Java che da Kotlin .

Per farlo, creiamo una classe Application con un metodo main () . Questo metodo chiamerà una classe Java o Kotlin in base al suo primo argomento:

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

Le classi JavaService e KotlinService dicono semplicemente "Hello World!":

public class JavaService { public void sayHello() { System.out.println("Java says 'Hello World!'"); } }
class KotlinService { fun sayHello() { System.out.println("Kotlin says 'Hello World!'") } }

Ora possiamo compilare e creare un pacchetto della nostra applicazione chiamando il comando mvn package .

Testiamo il jar prodotto eseguendo i seguenti comandi in un terminale:

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

Come possiamo vedere, questo chiama la classe JavaService che stampa sulla console "Java dice 'Hello World!'".

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

E questo chiama la classe KotlinService , che stampa "Kotlin dice 'Hello World!'".

5. conclusione

In questo articolo, ci siamo concentrati su come creare un progetto Maven gestendo sia sorgenti Java che Kotlin , compilandoli e impacchettandoli in un jar .

Il codice completo può essere esaminato su GitHub.