MavenでJavaとKotlinのプロジェクトを作成する

Mavenを使用してJavaおよびKotlinプロジェクトを作成する

1. 前書き

このクイックチュートリアルでは、JavaKotlinの両方のソースを処理するMaven プロジェクトを設定する方法を説明します。

まず、Javaソースのみのプロジェクトを作成します。 次に、kotlin-maven-plugin を追加してKotlin も処理します。

最後に、ダミークラスをいくつか追加し、アプリケーションをパッケージ化して、すべてが期待どおりに機能するかどうかをテストします。

2. Mavenを使用してJavaプロジェクトを作成する

まず第一に、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}
            
        
    

このpomファイルには、Javaソースをコンパイルしてjarファイルにパッケージ化するために必要なものがすべて含まれています。

3. Kotlin Mavenプラグインを追加

次に、このpomファイルを調整して、Kotlinソースも処理できるようにする必要があります。

まず、プロパティと kotlin-stdlib-jdk8 to our dependencieskotlin.versionを追加しましょう。 このようにして、Kotlinの機能にアクセスできるようになります。


    1.8
    1.2.51



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

次に、we need to add the kotlin-maven-pluginMavenプラグインに接続します。

compiletest-compileの両方の目標を処理するように構成し、ソースの場所を指定します。

慣例により、JavaKotlinのソースは異なるディレクトリに保持しますが、すべて同じに配置することもできます。


    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
                
            
        
    

これで設定はほぼ終わりです。 adapt maven-compiler-plugin configuration as we need Kotlin sources to be compiled before Java sourcesにする必要があります。

多くの場合、Mavenプラグインの実行は、宣言の順序に従って行われます。 したがって、maven-compiler-plugin の後にkotlin-maven-pluginを配置する必要があります。 ただし、前者には、フェーズ中に他のすべての前に実行される2つの特定の実行があります。default-compiledefault-testCompileです。

kotlin-maven-pluginの実行がmaven-compiler-plugin:の前に行われるようにするには、それらを無効にし、代わりにjava-compilejava-test-compileを有効にする必要があります。


    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
            
        
    

フェーズnoneを使用すると、デフォルトの実行が無効になり、Java固有の実行がcompileおよびtest-compileフェーズにバインドされていることがわかります。

4. 「Hello World!」と発声してくださいJavaとKotlinの両方で

すべてが正しく設定されたので、JavaKotlinの両方から世界に挨拶しましょう。

そのために、main() メソッドを使用してApplicationクラスを作成しましょう。 このメソッドは、最初の引数に従って、JavaまたはKotlinクラスを呼び出します。

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

JavaServiceクラスとKotlinServiceクラスは、単に「HelloWorld!」と言っています。

public class JavaService {

    public void sayHello() {
        System.out.println("Java says 'Hello World!'");
    }

}
class KotlinService {

    fun sayHello() {
        System.out.println("Kotlin says 'Hello World!'")
    }

}

これで、mvn packageコマンドを呼び出して、アプリケーションをコンパイルおよびパッケージ化できます。

ターミナルで次のコマンドを実行して、生成されたjarをテストしてみましょう。

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

ご覧のとおり、これはJavaServiceクラスを呼び出し、コンソールに「Javaは「HelloWorld!」と言います」と出力します。

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

そして、これはKotlinServiceクラスを呼び出し、「Kotlinは「Hello World!」と言います」と出力します。

5. 結論

この記事では、JavaKotlin の両方のソースを処理するMavenプロジェクトを作成し、それらをコンパイルしてjarにパッケージ化する方法に焦点を当てました。

完全なコードはover on GitHubで調べることができます。