Перейти к содержимому

Экспорт POM и нативный Maven

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

На этой странице

elide project export представляет проект elide.pkl в виде модели, которую читают другие инструменты. --format=pom записывает Maven-файл pom.xml; его собирает 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: координаты, зависимости с областями, release компилятора, корни исходников
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.

Была ли эта страница полезной?