Créer un projet Java et Kotlin avec Maven

1. Introduction

Dans ce tutoriel rapide, nous verrons comment configurer un projet Maven gérant à la fois les sources Java et Kotlin .

Nous allons d'abord créer un projet pour les sources Java uniquement. Nous ajouterons ensuite le plugin kotlin-maven-plugin pour gérer Kotlin également.

Et enfin, nous ajouterons quelques classes factices, emballerons notre application et testerons si tout fonctionne comme prévu.

2. Créez un projet Java avec Maven

Tout d'abord, créons un projet Java simple avec Maven :

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

Ce fichier pom contient tout ce dont nous avons besoin pour compiler les sources Java et les regrouper dans un fichier jar .

3. Ajouter le plugin Kotlin Maven

Nous devons maintenant régler ce fichier pom afin qu'il puisse également gérer les sources Kotlin .

Ajoutons d'abord kotlin.version à nos propriétés et kotlin-stdlib-jdk8 à nos dépendances . De cette façon, nous aurons accès aux fonctionnalités de Kotlin :

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

Ensuite, nous devons ajouter le plugin kotlin-maven-plugin à nos plugins Maven .

Nous allons le configurer pour gérer à la fois les objectifs de compilation et de test-compilation , en lui indiquant où trouver nos sources.

Par convention, nous conservons les sources Java et Kotlin dans des répertoires différents, bien que nous puissions les mettre tous dans le même:

 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     

C'est presque la fin de la configuration. Nous devons adapter la configuration de maven-compiler-plugin car nous avons besoin que les sources Kotlin soient compilées avant les sources Java .

Souvent, les exécutions des plugins Maven se produisent selon l'ordre de déclaration. Nous devrions donc placer maven-compiler-plugin après kotlin-maven-plugin . Mais le premier a deux exécutions spécifiques qui sont exécutées avant tout pendant les phases: default-compile et default-testCompile .

Nous devons les désactiver et activer java-compile et java-test-compile à la place pour nous assurer que l' exécution de kotlin-maven-plugin aura lieu avant 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    

Nous pouvons voir que les exécutions par défaut sont désactivées en utilisant la phase none , et les exécutions spécifiques à Java sont liées aux phases de compilation et de test-compilation .

4. Dites "Hello World!" Avec Java et Kotlin

Maintenant que nous avons tout configuré correctement, disons bonjour au monde… à la fois de Java et de Kotlin .

Pour ce faire, créons une classe Application avec une méthode main () . Cette méthode appellera soit une classe Java, soit une classe Kotlin selon son premier argument:

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

Les classes JavaService et KotlinService disent simplement «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!'") } }

Nous pouvons maintenant compiler et empaqueter notre application en appelant la commande mvn package .

Testons le jar produit en exécutant les commandes suivantes dans un terminal:

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

Comme nous pouvons le voir, cela appelle la classe JavaService qui imprime sur la console «Java dit« Hello World! »».

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

Et celui-ci appelle la classe KotlinService , qui affiche «Kotlin dit 'Hello World!'».

5. Conclusion

Dans cet article, nous nous sommes concentrés sur la façon de créer un projet Maven gérant à la fois les sources Java et Kotlin , en les compilant et en les regroupant dans un fichier jar .

Le code complet peut être examiné sur GitHub.