Перейти до вмісту

Експорт POM і нативний Maven

Передайте проєкт Elide до Maven та інших інструментів за допомогою elide project export (POM, JSON, модель IntelliJ) і зберіть результат через elide mvn або звичайний Maven.

На цій сторінці

elide project export подає проєкт elide.pkl як модель, яку читають інші інструменти. --format=pom записує pom.xml для Maven, який збирає elide mvn або будь-яка інсталяція Maven 3.9+.

Експорт

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

Передавайте формат як --format=<value>; вивід іде в stdout.

ФорматВміст
json (за замовчуванням)Маніфест після обчислення Pkl
pomPOM для Maven: координати, залежності з областями, цільовий випуск Java, корені вихідних файлів
intellijМодулі за наборами вихідних файлів, корені вмісту й вихідних файлів, залежності від бібліотек, рівень JDK

Що містить POM

elide.pklpom.xml
name<groupId>, <artifactId> і <name> (учасник робочого простору отримує назву робочого простору як <groupId>)
version<version>; 0.0.0, якщо не задано
jvm.target, jvm.java.releasemaven.compiler.release, .source, .target
packages, modulesОбласть compile
compileOnly, devPackages, processorsprovided
runtimeOnlyruntime
testPackagestest
Шлях до локального JARОбласть system зі шляхом від ${project.basedir}
Набори вихідних файлів<sourceDirectory>, <testSourceDirectory>; додаткові корені через build-helper-maven-plugin
Учасники робочого простору<modules> у корені, <parent> у кожному учаснику
Сусідній артефакт з Jar.fromЙого packages, modules і runtimeOnly, якщо їх ще не перелічено

Не експортуються: exclusions, substitutions і kotlinPlugins. Репозиторії, оголошені в маніфесті, експортуються.

Збирання POM

Засіб запускуКомандаЩо потрібно
Native Mavenelide mvn -- packageНічого більше
Звичайний Maven 3.9+mvn packageJAVA_HOME, що вказує на дистрибутив Elide, або будь-який JDK

Вкажіть у JAVA_HOME каталог, у якому лежить bin/elide; його bin/java і bin/javac запускають Maven, його компілятор і тестові JVM, які він породжує, так само, як це робив би JDK 25:

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

Щоб компілювати через elide javac і elide kotlinc усередині наявного POM, використовуйте Плагін Maven.

Приклад

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

Обмеження

  • Експорт односторонній: Elide ніколи не читає згенерований файл назад. Генеруйте його заново після зміни elide.pkl.
  • name стає координатами. Якщо в назві є пробіли чи інші символи, які Maven відхиляє, <groupId> і <artifactId> доведеться виправити вручну.
  • Оголошується лише build-helper-maven-plugin. Для вихідних файлів на Kotlin до збирання треба додати компілятор Kotlin, наприклад компілятор Elide.
  • Вбудовані тестові залежності Elide не додаються; оголошуйте тестові фреймворки в testPackages.

Чи була ця сторінка корисною?