Créer un projet Java et Kotlin avec Maven
1. introduction
Dans ce rapide tutoriel, nous allons voir comment configurer un sprojectMaven gérant à la fois les sourcesJava etKotlin.
Nous allons d'abord créer un projet pour les sources deJava uniquement. Nous ajouterons ensuite lekotlin-maven-plugin to handleKotlin as aussi.
Enfin, nous allons ajouter des classes factices, créer un package pour notre application et tester si tout fonctionne comme prévu.
2. Créer un projet Java avec Maven
Tout d'abord,let’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}
Ce fichierpom contient tout ce dont nous avons besoin pour compiler les sources deJava et les regrouper dans un fichierjar.
3. Ajouter le plugin Kotlin Maven
Nous devons maintenant régler ce fichierpom afin qu'il puisse également gérer les sourcesKotlin.
Ajoutons d'abordkotlin.version à nos propriétés et kotlin-stdlib-jdk8 to our dependencies. De cette façon, nous aurons accès aux fonctionnalités deKotlin:
1.8
1.2.51
org.jetbrains.kotlin
kotlin-stdlib-jdk8
${kotlin.version}
Ensuite,we need to add the kotlin-maven-plugin vers nos pluginsMaven.
Nous allons le configurer pour gérer à la fois les objectifscompile ettest-compile, en lui indiquant où trouver nos sources.
Par convention, nous conservons les sourcesJava etKotlin dans des répertoires différents, bien que nous puissions les mettre toutes 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 avons besoin deadapt maven-compiler-plugin configuration as we need Kotlin sources to be compiled before Java sources.
Souvent, les exécutions des pluginsMaven se produisent selon l'ordre de déclaration. Nous devrions donc placermaven-compiler-plugin afterkotlin-maven-plugin. Mais le premier a deux exécutions spécifiques qui sont exécutées avant tout pendant les phases:default-compile etdefault-testCompile.
Nous devons les désactiver et activerjava-compile etjava-test-compile à la place pour nous assurer que l'exécution dekotlin-maven-plugin se produira avantmaven-compiler-plugin:
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
Nous pouvons voir que les exécutions par défaut sont désactivées en utilisant la phasenone, et les exécutions spécifiques àJava sont liées aux phasescompile ettest-compile.
4. Dites 'Hello World!' avec Java et Kotlin
Maintenant que nous avons tout configuré correctement, disons bonjour au monde… deJava etKotlin.
Pour ce faire, créons une classeApplication avec une méthodemain() . Cette méthode appellera soit une classeJava soit une classeKotlin 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 classesJavaService etKotlinService 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 commandemvn package.
Testons le fichier 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 classeJavaService 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 classeKotlinService, 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 sourcesJava etKotlin , en les compilant et en les regroupant dans unjar.
Le code complet peut être examinéover on GitHub.