Mavenを使用してJavaおよびKotlinプロジェクトを作成する
1. 序章
このクイックチュートリアルでは、JavaとKotlinの両方のソースを処理するMavenプロジェクトを設定する方法を説明します。
まず、Javaソースのみのプロジェクトを作成します。 次に、 kotlin-maven-plugin を追加して、Kotlinも処理します。
最後に、ダミークラスをいくつか追加し、アプリケーションをパッケージ化して、すべてが期待どおりに機能するかどうかをテストします。
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. KotlinMavenプラグインを追加する
次に、この pom ファイルを調整して、Kotlinソースも処理できるようにする必要があります。
まず、プロパティに kotlin.version を追加し、依存関係に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>
これで構成はほぼ終了です。 Javaソースの前にKotlinソースをコンパイルする必要があるため、maven-compiler-plugin構成を適応させる必要があります。
多くの場合、 Maven プラグインの実行は、宣言の順序に従って行われます。 したがって、maven-compiler-pluginをkotlin-maven-pluginの後に配置する必要があります。 ただし、前者には、フェーズ中に他のすべての前に実行される2つの特定の実行があります。default-compileとdefault-testCompileです。
[X119X]の前にkotlin-maven-pluginの実行が行われるようにするには、それらを無効にし、java-compileとjava-test-compileを有効にする必要があります。 maven-compiler-plugin:
<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. 「HelloWorld!」と言います JavaとKotlinの両方
すべてが正しく設定されたので、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クラスは、単に「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"
ご覧のとおり、これは Java Service クラスを呼び出し、コンソールに「Javaは「HelloWorld!」と表示します」と出力します。
java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar path.to.your.Class "kotlin"
そして、これは KotlinService クラスを呼び出し、「Kotlinは「HelloWorld!」と言います」と出力します。
5. 結論
この記事では、JavaとKotlinソースの両方を処理するMavenプロジェクトを作成し、それらをコンパイルしてjarにパッケージ化する方法に焦点を当てました。
完全なコードは、GitHubでを調べることができます。