Zum Inhalt springen

POM-Export und natives Maven

Übergeben Sie ein Elide-Projekt mit elide project export (POM, JSON, IntelliJ-Modell) an Maven und andere Werkzeuge und bauen Sie das Ergebnis mit elide mvn oder regulärem Maven.

Auf dieser Seite

elide project export gibt ein elide.pkl-Projekt als Modell aus, das andere Werkzeuge lesen. --format=pom schreibt eine Maven-pom.xml, die elide mvn oder jede Maven-Installation ab 3.9 baut.

Export

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

Übergeben Sie das Format als --format=<value>; die Ausgabe geht nach stdout.

FormatInhalt
json (Standard)Das Manifest nach der Auswertung durch Pkl
pomEin Maven-POM: Koordinaten, Abhängigkeiten mit Scopes, Compiler-Release, Quellverzeichnisse
intellijModule je Source-Set, Inhalts- und Quellverzeichnisse, Bibliotheksabhängigkeiten, JDK-Level

Was das POM enthält

elide.pklpom.xml
name<groupId>, <artifactId> und <name> (ein Workspace-Mitglied erhält den Workspace-Namen als <groupId>)
version<version>; 0.0.0, wenn nicht gesetzt
jvm.target, jvm.java.releasemaven.compiler.release, .source, .target
packages, modulesScope compile
compileOnly, devPackages, processorsprovided
runtimeOnlyruntime
testPackagestest
Ein lokaler JAR-PfadScope system mit einem Pfad unter ${project.basedir}
Source-Sets<sourceDirectory>, <testSourceDirectory>; weitere Verzeichnisse über build-helper-maven-plugin
Workspace-Mitglieder<modules> im Root-POM, <parent> in jedem Mitglied
Ein Geschwisterprojekt in Jar.fromSeine packages, modules und runtimeOnly, sofern nicht bereits aufgeführt

Nicht exportiert werden exclusions, substitutions und kotlinPlugins. Im Manifest deklarierte Repositorys werden exportiert.

Das POM bauen

AusführungBefehlBenötigt
Native Mavenelide mvn -- packageNichts weiter
Reguläres Maven 3.9+mvn packageJAVA_HOME auf die Elide-Distribution gesetzt, oder ein beliebiges JDK

Lassen Sie JAVA_HOME auf das Verzeichnis zeigen, das bin/elide enthält; dessen bin/java und bin/javac führen Maven, seinen Compiler und seine abgezweigten Test-JVMs so aus, wie es ein JDK 25 täte:

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

Um innerhalb eines bestehenden POM mit elide javac und elide kotlinc zu kompilieren, verwenden Sie das Maven-Plugin.

Beispiel

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

Einschränkungen

  • Der Export ist einseitig: Elide liest die erzeugte Datei nie zurück. Erzeugen Sie sie nach Änderungen an elide.pkl neu.
  • name wird zu den Koordinaten. Ein Name mit Leerzeichen oder anderen Zeichen, die Maven ablehnt, erfordert ein von Hand bearbeitetes <groupId> und <artifactId>.
  • Nur build-helper-maven-plugin wird deklariert. Für Kotlin-Quellen muss dem Build ein Kotlin-Compiler hinzugefügt werden, etwa der von Elide.
  • Die eingebauten Testabhängigkeiten von Elide werden nicht hinzugefügt; deklarieren Sie Test-Frameworks in testPackages.

War diese Seite hilfreich?