Как я могу добавить шаг упаковщика в скрипт сборки maven?
Я пытаюсь изменить процедуру сборки для создания отдельного исполняемого файла. Есть несколько инструментов, которые делают это, и Packr кажется идеальным. Также, насколько я могу судить, официально поддерживается мой Maven.
Проведя примерно эпоху googlin', мне не повезло найти простой пример maven XML шага сборки packr. Также я очень новичок в Maven, что делает это более сложным. Тем не менее, мне кажется, что должен быть довольно стандартный блок XML, в котором нужно изменить только несколько имен jar, чтобы он работал.
Я также работаю в Eclipse и пытаюсь создать исполняемые файлы для Windows и Linux.
Packr: https://github.com/libgdx/packr
Пакр в Maven: https://mvnrepository.com/artifact/com.badlogicgames.packr/packr
3 ответа
Я написал плагин для сборки maven, который упаковывает java api. Плагин построен на основе версии 2 пакета.
Я не мог найти плагин Maven для этого либо.
В maven central есть версия 1.2 packr, но имейте в виду, что сейчас это довольно старая версия ( https://github.com/libgdx/packr/issues/58).
Вы можете использовать стандартный exec-maven-plugin, чтобы использовать зависимость packr 1.2, а затем запустить ее (см. http://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-plugin-dependencies.html).
Соответствующий фрагмент в файле сборки pom.xml может выглядеть примерно так:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.badlogicgames.packr/packr -->
<dependency>
<groupId>com.badlogicgames.packr</groupId>
<artifactId>packr</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>package-native-windows</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<includeProjectDependencies>false</includeProjectDependencies>
<includePluginDependencies>true</includePluginDependencies>
<executableDependency>
<groupId>com.badlogicgames.packr</groupId>
<artifactId>packr</artifactId>
</executableDependency>
<mainClass>com.badlogicgames.packr.Packr</mainClass>
<arguments>
<argument>packr-windows-config.json</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Если у вас уже есть <build>
а также <plugins>
раздел в вашем pom.xml, а затем просто взять <plugin>
немного и положить его там.
Файл конфигурации json может выглядеть примерно так:
{
"platform": "windows",
"jdk": "jre-8u102-windows-x64.zip",
"executable": "MyApp",
"appjar": "target/MyApp-jar-with-dependencies.jar",
"classpath": [ "MyApp-jar-with-dependencies.jar" ],
"mainclass": "com.foo.MyAppMain",
"outdir": "target/native-windows"
}
Одна вещь, о которой следует знать, похоже, что packr 1.2 удаляет каталог 'outdir', поэтому будьте осторожны, используя что-то, кроме каталога 'target'.
В случае, если это поможет, я лично закончил упаковку для окон, используя launch4j с launch4j-maven-plugin и упаковку для linux/mac, используя стандартный инструмент Oracle javapackager через javafx-maven-plugin. Я бы связался с этими двумя, но Stackru говорит мне, что мне не хватает представителя, чтобы включить более двух ссылок.
1. Определите профили в pom.xml для Windows, Linux и Mac OS X 2. При условии, что я скачал packr.jar, просто вызовите необходимый профиль
<profiles>
<profile>
<id>windows-profile</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${basedir}/packaging/packr.jar</argument>
<argument>${basedir}/packaging/config-windows.json</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Чтобы получить дистрибутив Windows, сообщите maven желаемый профиль:
clean install -Pwindows-profile
Ниже вы также можете увидеть config-windows.json:
{
"platform": "windows64",
"jdk": "C:/Program Files/Java/jdk1.8.0_144",
"executable": "file-sort",
"classpath": [
"target/file-sort-jar-with-dependencies.jar"
],
"mainclass": "com.iscorobogaci.fx.FxApplication",
"output": "../windows64"
}
Проверьте это на GitHub: https://github.com/scorobogaci/file-sorting-app