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

1.はじめに

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

最初に Java のソース用のプロジェクトを作成します。それでは、 __ kotlinをうまく処理するために kotlin-maven-plugin __を追加します。

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

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

まず、** Maven を使って簡単な Java プロジェクトを作成しましょう。

<artifactId>maven-java-kotlin</artifactId>
<packaging>jar</packaging>

<properties>
    <java.version>1.8</java.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

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

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

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

最初に kotlin.version をプロパティに追加してみましょう。 .jetbrains.kotlin%22[ kotlin-stdlib-jdk8 ]私たちの依存関係 。この方法で私たちは Kotlin 機能にアクセスすることができます:

<properties>
    <java.version>1.8</java.version>
    <kotlin.version>1.2.51</kotlin.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
</dependencies>

次に、 kotlin-maven-plugin Maven プラグインに追加する必要があります。

compile test-compile の両方の目標を処理するように設定して、ソースの場所を教えます。

慣例では、 Java Kotlin のソースを別々のディレクトリに保存しますが、それらをすべて同じ場所に置くこともできます。

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <executions>
        <execution>
            <id>compile</id>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                    <sourceDir>${project.basedir}/src/main/java</sourceDir>
                </sourceDirs>
            </configuration>
        </execution>
        <execution>
            <id>test-compile</id>
            <goals>
                <goal>test-compile</goal>
            </goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                    <sourceDir>${project.basedir}/src/test/java</sourceDir>
                </sourceDirs>
            </configuration>
        </execution>
    </executions>
</plugin>

これで構成はほぼ終了です。 __Kotlin sourcesを Java sources の前にコンパイルする必要があるので、 maven-compiler-plugin__設定を 調整する必要があります。

多くの場合、 Maven プラグインの実行は宣言の順序に従って行われます。それで _maven-compiler-plugin after kotlin-maven-plugin を置くべきです。しかし、前者には、フェーズの間に他のすべてのものの前に実行される2つの特定の実行があります: default-compile default-testCompile_

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

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
    </configuration>
    <executions>
        <execution>
            <id>default-compile</id>
            <phase>none</phase>
        </execution>
        <execution>
            <id>default-testCompile</id>
            <phase>none</phase>
        </execution>
        <execution>
            <id>java-compile</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <execution>
            <id>java-test-compile</id>
            <phase>test-compile</phase>
            <goals>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

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

4. JavaとKotlinの両方で「Hello World!」と言います.

正しく設定できたので、 Java Kotlin の両方から、世界へようこそ。

そのためには、 __ 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 クラスは単に「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!'")
    }

}

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

端末で次のコマンドを実行して、生成されたjarファイルをテストしましょう。

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

ご覧のように、これは JavaService クラスを呼び出してコンソールに出力します。

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

そしてこれは KotlinService クラスを呼び出します。

5.まとめ

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

完全なコードはhttps://github.com/eugenp/tutorials/tree/master/core-kotlin[GitHubについて]で調べることができます。