Créer un projet Java et Kotlin avec Maven

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}
                ${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}
        ${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.