Si añade dev.elide:elide-maven-plugin a un pom.xml, la compilación usa elide javac para Java y elide kotlinc
para Kotlin. Maven conserva la resolución de dependencias, las pruebas, el empaquetado y todos los demás plugins.
Requisitos
| Versión | |
|---|---|
| Maven | 3.9 o posterior |
| JDK que ejecuta Maven | 11 o posterior |
| Elide | 1.6 o posterior |
Elide debe estar en PATH; si no, defina <executable> (consulte Configuración).
Elegir un artefacto
| Artefacto | Úselo cuando | Compila |
|---|---|---|
elide-maven-plugin | Es una configuración nueva, con Java y Kotlin | Java y Kotlin |
elide-kotlin-maven-plugin | La compilación ya usa kotlin-maven-plugin | Kotlin; Java mediante maven-compiler-plugin |
elide-java-compiler | Solo hay Java y maven-compiler-plugin se queda como está | Java |
Los tres están en Maven Central bajo dev.elide, versión 1.0.0.
Instalar
<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> es obligatorio: reemplaza las vinculaciones de compilación predeterminadas. Con él, el
plugin añade src/main/kotlin y src/test/kotlin como raíces de fuentes, y una dependencia kotlin-stdlib cuando el
POM no declara ninguna.
Para sustituir directamente kotlin-maven-plugin, cambie sus coordenadas a
dev.elide:elide-kotlin-maven-plugin:1.0.0 y conserve su configuración; acepta los mismos parámetros.
Solo para Java, sin un plugin nuevo:
<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>Objetivos
Con las extensiones activadas, los objetivos se vinculan al ciclo de vida; ninguno necesita un <execution>.
| Objetivo | Fase | Ejecuta |
|---|---|---|
elide:kapt | process-sources | Se omite salvo que haya procesadores de anotaciones configurados |
elide:compile-kotlin | compile | elide kotlinc sobre las fuentes principales |
elide:compile | compile | elide javac sobre las fuentes principales, después de Kotlin |
elide:test-kapt | process-test-sources | Se omite salvo que haya procesadores de anotaciones configurados |
elide:test-compile-kotlin | test-compile | elide kotlinc sobre las fuentes de prueba |
elide:test-compile | test-compile | elide javac sobre las fuentes de prueba |
elide-kotlin-maven-plugin tiene los mismos objetivos, sin los de Java, con el prefijo elide-kotlin.
Configuración
Se aplican todos los parámetros de maven-compiler-plugin y kotlin-maven-plugin (<release>, <compilerArgs>,
<args>, <jvmTarget>, …). Se añade un parámetro:
| Parámetro | Valor predeterminado | Efecto |
|---|---|---|
executable | elide en PATH | Ruta al binario 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>Con elide-java-compiler, defina <executable> en la configuración de maven-compiler-plugin.
Ejemplo
Un proyecto con un objeto de Kotlin, una clase principal de Java y una prueba de 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 y consultas de dependencias
Para proyectos con un elide.pkl, consulte OpenRewrite e
Índice de código de dependencias. El plugin del compilador no añade objetivos de
reescritura ni de índice de código, ni pasa a esos comandos el grafo de dependencias que resuelve Maven. Consulte
el alcance de la configuración del proyecto antes de usarlos junto
a Maven.
Límites
- kapt no se ejecuta: una ejecución de
kaptcon procesadores de anotaciones configurados falla. - Los plugins del compilador de Kotlin (
<compilerPlugins>) distintos de all-open, no-arg, sam-with-receiver, assignment y Lombok fallan con un error del compilador. - La
kotlin-stdlibañadida es la versión 2.3.21; declarekotlin-stdlibusted mismo para elegir otra. - Cada compilación inicia un proceso
elidenuevo; no hay un daemon de compilador compartido entre módulos.
Para ejecutar toda la compilación de Maven de forma nativa, consulte Exportación de POM y Maven nativo. Para dejar Maven, consulte Adoptar un proyecto existente.