Aller au contenu

Export POM et Maven natif

Transmettez un projet Elide à Maven et à d'autres outils avec elide project export (POM, JSON, modèle IntelliJ), puis construisez le résultat avec elide mvn ou Maven standard.

Sur cette page

elide project export produit, à partir d’un projet elide.pkl, un modèle que lisent d’autres outils. --format=pom écrit un pom.xml Maven, que construit elide mvn ou toute installation de Maven 3.9+.

Exporter

elide project export --format=pom > pom.xml
elide project export --format=json          # resolved manifest
elide project export --format=intellij      # IntelliJ workspace model
elide project export -p app --format=pom    # another project directory

Passez le format sous la forme --format=<value> ; la sortie va sur stdout.

FormatContenu
json (par défaut)Le manifeste après évaluation par Pkl
pomUn POM Maven : coordonnées, dépendances avec leurs portées, release du compilateur, racines de sources
intellijModules par source set, racines de contenu et de sources, dépendances de bibliothèques, niveau du JDK

Contenu du POM

elide.pklpom.xml
name<groupId>, <artifactId> et <name> (un membre d’espace de travail prend le nom de l’espace de travail comme <groupId>)
version<version> ; 0.0.0 si absent
jvm.target, jvm.java.releasemaven.compiler.release, .source, .target
packages, modulesPortée compile
compileOnly, devPackages, processorsprovided
runtimeOnlyruntime
testPackagestest
Un chemin vers un JAR localPortée system avec un chemin ${project.basedir}
Source sets<sourceDirectory>, <testSourceDirectory> ; racines supplémentaires via build-helper-maven-plugin
Membres de l’espace de travail<modules> à la racine, <parent> dans chaque membre
Un projet frère dans Jar.fromSes packages, modules et runtimeOnly, s’ils ne sont pas déjà listés

Ne sont pas exportés : exclusions, substitutions et kotlinPlugins. Les dépôts déclarés dans le manifeste sont exportés.

Construire le POM

ExécuteurCommandePrérequis
Native Mavenelide mvn -- packageRien d’autre
Maven 3.9+ standardmvn packageJAVA_HOME pointant vers la distribution Elide, ou n’importe quel JDK

Faites pointer JAVA_HOME vers le répertoire qui contient bin/elide ; ses bin/java et bin/javac exécutent Maven, son compilateur et les JVM de test qu’il lance en fork, comme le ferait un JDK 25 :

export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v elide)")")")"
mvn package

Pour compiler avec elide javac et elide kotlinc dans un POM existant, utilisez le Plugin Maven.

Exemple

amends "elide:project.pkl"

name = "hello"
version = "1.0.0"

dependencies {
  maven {
    packages { "com.google.guava:guava:33.4.8-jre" }
    testPackages { "org.junit.jupiter:junit-jupiter:5.13.4" }
  }
}

jvm {
  main = "com.example.Hello"
  target = 17
}
elide project export --format=pom > pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hello</groupId>
  <artifactId>hello</artifactId>
  <version>1.0.0</version>
  <name>hello</name>
  <properties>
    <maven.compiler.release>17</maven.compiler.release>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.source>17</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>33.4.8-jre</version>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.13.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
  </build>
</project>
elide mvn -- package
Running com.example.HelloTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.275 s -- in com.example.HelloTest
Building jar: target/hello-1.0.0.jar
BUILD SUCCESS
Total time:  5.041 s

Limites

  • L’export est à sens unique : Elide ne relit jamais le fichier généré. Régénérez-le après avoir modifié elide.pkl.
  • name devient les coordonnées. Un nom contenant des espaces ou d’autres caractères refusés par Maven demande de modifier à la main <groupId> et <artifactId>.
  • Seul build-helper-maven-plugin est déclaré. Les sources Kotlin nécessitent l’ajout d’un compilateur Kotlin au build, comme celui d’Elide.
  • Les dépendances de test intégrées d’Elide ne sont pas ajoutées ; déclarez les frameworks de test dans testPackages.

Cette page vous a-t-elle aidé ?