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 |
pom | POM для Maven: координаты, зависимости с областями, release компилятора, корни исходников |
intellij | Модули по наборам исходников, корни содержимого и исходников, зависимости от библиотек, уровень JDK |
Что содержит POM
elide.pkl | pom.xml |
|---|---|
name | <groupId>, <artifactId> и <name> (участник рабочего пространства получает имя рабочего пространства как <groupId>) |
version | <version>; 0.0.0, если не задано |
jvm.target, jvm.java.release | maven.compiler.release, .source, .target |
packages, modules | Область compile |
compileOnly, devPackages, processors | provided |
runtimeOnly | runtime |
testPackages | test |
| Путь к локальному JAR | Область system с путём от ${project.basedir} |
| Наборы исходников | <sourceDirectory>, <testSourceDirectory>; дополнительные корни через build-helper-maven-plugin |
| Участники рабочего пространства | <modules> в корне, <parent> в каждом участнике |
Соседний проект в Jar.from | Его packages, modules и runtimeOnly, если они ещё не перечислены |
Не экспортируются: exclusions, substitutions и kotlinPlugins. Репозитории, объявленные в манифесте,
экспортируются.
Сборка POM
| Средство запуска | Команда | Что нужно |
|---|---|---|
| Native Maven | elide mvn -- package | Ничего больше |
| Обычный Maven 3.9+ | mvn package | JAVA_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 -- packageRunning 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.