Это почти конец конфигурации. Нам нужно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:
Мы можем видеть, что выполнение по умолчанию отключено с использованием фазы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, выполнив следующие команды в терминале: