Якщо додати dev.elide:elide-maven-plugin до pom.xml, збирання компілює Java через elide javac, а Kotlin через
elide kotlinc. Розв’язання залежностей, тести, пакування й усі інші плагіни залишаються за Maven.
Вимоги
| Версія | |
|---|---|
| Maven | 3.9 або новіша |
| JDK, на якому працює Maven | 11 або новіша |
| Elide | 1.6 або новіша |
Elide має бути в PATH, інакше задайте <executable> (див. Налаштування).
Вибір артефакту
| Артефакт | Коли використовувати | Компілює |
|---|---|---|
elide-maven-plugin | Нове налаштування, Java і Kotlin | Java і Kotlin |
elide-kotlin-maven-plugin | Збирання вже використовує kotlin-maven-plugin | Kotlin; Java через maven-compiler-plugin |
elide-java-compiler | Лише Java, maven-compiler-plugin лишається без змін | Java |
Усі три опубліковано в Maven Central під dev.elide, версія 1.0.0.
Встановлення
<build>
<plugins>
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build><extensions>true</extensions> обов’язковий: він замінює стандартні прив’язки компіляції. З ним плагін додає
src/main/kotlin і src/test/kotlin як корені вихідних файлів, а також залежність kotlin-stdlib, якщо POM не
оголошує її сам.
Щоб замінити kotlin-maven-plugin на місці, змініть його координати на dev.elide:elide-kotlin-maven-plugin:1.0.0 і
залиште конфігурацію; він приймає ті самі параметри.
Лише для Java, без нового плагіна:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.15.0</version>
<dependencies>
<dependency>
<groupId>dev.elide</groupId>
<artifactId>elide-java-compiler</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<compilerId>elide</compilerId>
</configuration>
</plugin>Цілі
З увімкненими розширеннями цілі прив’язуються до життєвого циклу; жодній не потрібен <execution>.
| Ціль | Фаза | Запускає |
|---|---|---|
elide:kapt | process-sources | Пропускається, якщо не налаштовано процесори анотацій |
elide:compile-kotlin | compile | elide kotlinc для основних вихідних файлів |
elide:compile | compile | elide javac для основних вихідних файлів, після Kotlin |
elide:test-kapt | process-test-sources | Пропускається, якщо не налаштовано процесори анотацій |
elide:test-compile-kotlin | test-compile | elide kotlinc для тестових вихідних файлів |
elide:test-compile | test-compile | elide javac для тестових вихідних файлів |
elide-kotlin-maven-plugin має ті самі цілі, крім цілей для Java, із префіксом elide-kotlin.
Налаштування
Діють усі параметри maven-compiler-plugin і kotlin-maven-plugin (<release>, <compilerArgs>, <args>,
<jvmTarget>, …). Додається один параметр:
| Параметр | За замовчуванням | Дія |
|---|---|---|
executable | elide з PATH | Шлях до бінарного файлу elide |
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
<configuration>
<executable>/opt/elide/bin/elide</executable>
</configuration>
</plugin>З elide-java-compiler задавайте <executable> у конфігурації maven-compiler-plugin.
Приклад
Проєкт з об’єктом на Kotlin, головним класом на Java і тестом JUnit:
pom.xml
src/main/kotlin/com/example/Greeter.kt
src/main/java/com/example/Hello.java
src/test/java/com/example/GreeterTest.java<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>hello</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.release>21</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.13.4</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
</plugin>
</plugins>
</build>
</project>mvn package[INFO] Added kotlin-stdlib dependency, version 2.3.21
[INFO] --- elide:1.0.0:kapt (default-kapt) @ hello ---
[INFO] No annotation processors configured, skipping kapt
[INFO] --- elide:1.0.0:compile-kotlin (default-compile-kotlin) @ hello ---
[INFO] ✅ Kotlin sources compiled to `classes` (1.3s)
[INFO] --- elide:1.0.0:compile (default-compile) @ hello ---
[INFO] Compiling 1 source file with elide [forked debug release 21] to target/classes
[INFO] --- elide:1.0.0:test-compile (default-test-compile) @ hello ---
[INFO] Compiling 1 source file with elide [forked debug release 21] to target/test-classes
[INFO] --- surefire:3.5.4:test (default-test) @ hello ---
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] --- jar:3.5.0:jar (default-jar) @ hello ---
[INFO] Building jar: target/hello-1.0.0.jar
[INFO] BUILD SUCCESSOpenRewrite і запити до залежностей
Для проєктів з elide.pkl див. OpenRewrite та
Індекс коду залежностей. Плагін компілятора не додає цілей для рефакторингу чи індексу коду
й не передає цим командам граф залежностей, розв’язаний Maven. Перш ніж використовувати їх поряд із Maven, прочитайте
про межу налаштування проєкту.
Обмеження
- kapt не запускається: виконання
kaptз налаштованими процесорами анотацій завершується помилкою. - Плагіни компілятора Kotlin (
<compilerPlugins>), крім all-open, no-arg, sam-with-receiver, assignment і Lombok, завершуються помилкою компілятора. - Додана
kotlin-stdlibмає версію 2.3.21; щоб вибрати іншу, оголосітьkotlin-stdlibсамостійно. - Кожна компіляція запускає новий процес
elide; спільного демона компілятора між модулями немає.
Щоб натомість запускати все збирання Maven нативно, див. Експорт POM і нативний Maven. Щоб відмовитися від Maven, див. Перенесення наявного проєкту.