Mit dev.elide:elide-maven-plugin in einer pom.xml kompiliert der Build Java mit elide javac und Kotlin mit
elide kotlinc. Abhängigkeitsauflösung, Tests, Packaging und alle anderen Plugins bleiben bei Maven.
Voraussetzungen
| Version | |
|---|---|
| Maven | 3.9 oder neuer |
| JDK, das Maven ausführt | 11 oder neuer |
| Elide | 1.6 oder neuer |
Elide muss im PATH liegen, oder Sie setzen <executable> (siehe Konfiguration).
Ein Artefakt wählen
| Artefakt | Verwenden, wenn | Kompiliert |
|---|---|---|
elide-maven-plugin | Neue Einrichtung, Java und Kotlin | Java und Kotlin |
elide-kotlin-maven-plugin | Der Build nutzt bereits kotlin-maven-plugin | Kotlin; Java über maven-compiler-plugin |
elide-java-compiler | Nur Java, maven-compiler-plugin bleibt unverändert | Java |
Alle drei liegen in Maven Central unter dev.elide, Version 1.0.0.
Installation
<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> ist erforderlich: Es ersetzt die Standard-Bindungen für das Kompilieren. Damit fügt
das Plugin src/main/kotlin und src/test/kotlin als Quellverzeichnisse hinzu, außerdem eine
kotlin-stdlib-Abhängigkeit, wenn das POM keine deklariert.
Um kotlin-maven-plugin an Ort und Stelle zu ersetzen, ändern Sie seine Koordinaten auf
dev.elide:elide-kotlin-maven-plugin:1.0.0 und behalten seine Konfiguration bei; es akzeptiert dieselben Parameter.
Nur für Java, ohne neues Plugin:
<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>Goals
Mit aktivierten Extensions binden sich die Goals an den Lebenszyklus; keines braucht eine <execution>.
| Goal | Phase | Führt aus |
|---|---|---|
elide:kapt | process-sources | Übersprungen, sofern keine Annotationsprozessoren konfiguriert sind |
elide:compile-kotlin | compile | elide kotlinc für die Hauptquellen |
elide:compile | compile | elide javac für die Hauptquellen, nach Kotlin |
elide:test-kapt | process-test-sources | Übersprungen, sofern keine Annotationsprozessoren konfiguriert sind |
elide:test-compile-kotlin | test-compile | elide kotlinc für die Testquellen |
elide:test-compile | test-compile | elide javac für die Testquellen |
elide-kotlin-maven-plugin hat dieselben Goals ohne die für Java, unter dem Präfix elide-kotlin.
Konfiguration
Jeder Parameter von maven-compiler-plugin und kotlin-maven-plugin gilt (<release>, <compilerArgs>, <args>,
<jvmTarget>, …). Ein Parameter kommt hinzu:
| Parameter | Standard | Wirkung |
|---|---|---|
executable | elide im PATH | Pfad zur elide-Binärdatei |
<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>Mit elide-java-compiler setzen Sie <executable> stattdessen in der Konfiguration von maven-compiler-plugin.
Beispiel
Ein Projekt mit einem Kotlin-Objekt, einer Java-Hauptklasse und einem JUnit-Test:
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 und Abhängigkeitsabfragen
Für Projekte mit einer elide.pkl siehe OpenRewrite und
Codeindex für Abhängigkeiten. Das Compiler-Plugin fügt keine Goals für Rewrite oder den
Codeindex hinzu und gibt den von Maven aufgelösten Abhängigkeitsgraphen nicht an diese Befehle weiter. Lesen Sie
die Grenze der Projekteinrichtung, bevor Sie sie neben Maven
einsetzen.
Einschränkungen
- kapt läuft nicht: Eine
kapt-Execution mit konfigurierten Annotationsprozessoren schlägt fehl. - Kotlin-Compiler-Plugins (
<compilerPlugins>) außer all-open, no-arg, sam-with-receiver, assignment und Lombok schlagen mit einem Compilerfehler fehl. - Die hinzugefügte
kotlin-stdlibhat Version 2.3.21; deklarieren Siekotlin-stdlibselbst, um eine andere zu wählen. - Jede Kompilierung startet einen neuen
elide-Prozess; es gibt keinen gemeinsamen Compiler-Daemon zwischen Modulen.
Um stattdessen den gesamten Maven-Build nativ auszuführen, siehe POM-Export und natives Maven. Um Maven zu verlassen, siehe Bestehendes Projekt übernehmen.