Перейти до вмісту

Плагін Maven

Компілюйте Java і Kotlin у наявному збиранні Maven за допомогою javac і kotlinc з Elide: elide-maven-plugin, пряма заміна для Kotlin і налаштування лише через compilerId.

На цій сторінці

Якщо додати dev.elide:elide-maven-plugin до pom.xml, збирання компілює Java через elide javac, а Kotlin через elide kotlinc. Розв’язання залежностей, тести, пакування й усі інші плагіни залишаються за Maven.

Вимоги

Версія
Maven3.9 або новіша
JDK, на якому працює Maven11 або новіша
Elide1.6 або новіша

Elide має бути в PATH, інакше задайте <executable> (див. Налаштування).

Вибір артефакту

АртефактКоли використовуватиКомпілює
elide-maven-pluginНове налаштування, Java і KotlinJava і Kotlin
elide-kotlin-maven-pluginЗбирання вже використовує kotlin-maven-pluginKotlin; 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:kaptprocess-sourcesПропускається, якщо не налаштовано процесори анотацій
elide:compile-kotlincompileelide kotlinc для основних вихідних файлів
elide:compilecompileelide javac для основних вихідних файлів, після Kotlin
elide:test-kaptprocess-test-sourcesПропускається, якщо не налаштовано процесори анотацій
elide:test-compile-kotlintest-compileelide kotlinc для тестових вихідних файлів
elide:test-compiletest-compileelide javac для тестових вихідних файлів

elide-kotlin-maven-plugin має ті самі цілі, крім цілей для Java, із префіксом elide-kotlin.

Налаштування

Діють усі параметри maven-compiler-plugin і kotlin-maven-plugin (<release>, <compilerArgs>, <args>, <jvmTarget>, …). Додається один параметр:

ПараметрЗа замовчуваннямДія
executableelide з 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 SUCCESS

OpenRewrite і запити до залежностей

Для проєктів з 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, див. Перенесення наявного проєкту.

Чи була ця сторінка корисною?