Saltar al contenido

Plugin de Maven

Compile Java y Kotlin en una compilación de Maven existente con javac y kotlinc de Elide: elide-maven-plugin, el reemplazo directo para Kotlin y la configuración solo con compilerId.

En esta página

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
Maven3.9 o posterior
JDK que ejecuta Maven11 o posterior
Elide1.6 o posterior

Elide debe estar en PATH; si no, defina <executable> (consulte Configuración).

Elegir un artefacto

ArtefactoÚselo cuandoCompila
elide-maven-pluginEs una configuración nueva, con Java y KotlinJava y Kotlin
elide-kotlin-maven-pluginLa compilación ya usa kotlin-maven-pluginKotlin; Java mediante maven-compiler-plugin
elide-java-compilerSolo 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>.

ObjetivoFaseEjecuta
elide:kaptprocess-sourcesSe omite salvo que haya procesadores de anotaciones configurados
elide:compile-kotlincompileelide kotlinc sobre las fuentes principales
elide:compilecompileelide javac sobre las fuentes principales, después de Kotlin
elide:test-kaptprocess-test-sourcesSe omite salvo que haya procesadores de anotaciones configurados
elide:test-compile-kotlintest-compileelide kotlinc sobre las fuentes de prueba
elide:test-compiletest-compileelide 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ámetroValor predeterminadoEfecto
executableelide en PATHRuta 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 SUCCESS

OpenRewrite 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 kapt con 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-stdlib añadida es la versión 2.3.21; declare kotlin-stdlib usted mismo para elegir otra.
  • Cada compilación inicia un proceso elide nuevo; 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.

¿Te resultó útil esta página?