Создать проект Java и Kotlin с Maven
1. Вступление
В этом кратком руководстве мы увидим, как настроить спроектMaven , обрабатывающий источники какJava, так иKotlin.
Сначала создадим проект только для источниковJava. Затем мы также добавим дескрипторkotlin-maven-plugin toKotlin .
И, наконец, мы добавим несколько фиктивных классов, упакуем наше приложение и проверим, все ли работает должным образом.
2. Создать проект Java с Maven
Прежде всего,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}
Этот файлpom содержит все, что нам нужно для компиляции исходных текстовJava и их упаковки в файлjar.
3. Добавить плагин Kotlin Maven
Теперь нам нужно настроить этот файлpom, чтобы он также мог обрабатывать источникиKotlin.
Давайте сначала добавимkotlin.version к нашим свойствам и kotlin-stdlib-jdk8 to our dependencies. Таким образом, у нас будет доступ к функциямKotlin:
1.8
1.2.51
org.jetbrains.kotlin
kotlin-stdlib-jdk8
${kotlin.version}
Затемwe need to add the kotlin-maven-plugin в наши плагиныMaven.
Мы настроим его для обработки целей какcompile, так иtest-compile, сообщая ему, где найти наши источники.
По соглашению мы храним источникиJava иKotlin в разных каталогах, хотя мы могли бы разместить их все в одном:
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 afterkotlin-maven-plugin. Но у первого есть два конкретных исполнения, которые выполняются раньше всего на этапах:default-compile иdefault-testCompile.
Нам нужно отключить их и вместо этого включитьjava-compile иjava-test-compile, чтобы гарантировать, что выполнениеkotlin-maven-plugin произойдет доmaven-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
Мы можем видеть, что выполнение по умолчанию отключено с использованием фазыnone, а выполнение, специфичное дляJava, привязано к фазамcompile иtest-compile.
4. Скажи: «Привет, мир!» как с Java, так и с Kotlin
Теперь, когда мы все правильно настроили, давайте поздороваемся с миром… отJava иKotlin.
Для этого давайте создадим классApplication с методомmain() . Этот метод вызовет класс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 говорит« Hello World! »».
java -cp maven-java-kotlin-1.0.0-SNAPSHOT.jar path.to.your.Class "kotlin"
И этот вызывает классKotlinService, который печатает «Котлин говорит« Hello World! »».
5. Заключение
В этой статье мы сосредоточились на том, как создать проект Maven, обрабатывающий какJava, так иKotlin sources, компилируя и упаковывая их вjar.
Полный код можно просмотретьover on GitHub.