Попытка интегрировать Launch4j в проект Maven с помощью плагина Alakai
Я пытаюсь объединить генерацию установщика как часть процесса компиляции maven.
Я нашел плагин Alakai для Launch4j. Я создал простое приложение Hello World, используя Maven. Я пытался использовать примеры конфигурации, предоставленные Alakai, но когда я компилирую свой проект, я получаю:
Не удалось выполнить цель org.bluestemsoftware.open.maven.plugin:launch4j-plugin:1.5.0.0:launch4j (launch4j) в проекте Launch4j: не удалось построить исполняемый файл; пожалуйста, проверьте вашу конфигурацию. Фляга приложения не существует. -> [Помощь 1]
К сожалению, документация Алакай ограничена, и я не мог найти много с Google.
- Кто-нибудь знает, где должен быть установлен файл Launch4j config.xml? Это в рамках проекта? Это в отдельном каталоге?
- Нужно ли использовать плагин сборки?
- Я установил Launch4j на свой компьютер. Нужно ли указывать каталог установки в моем файле pom.xml? Если да, то как?
- У кого-нибудь есть рабочий пример / пример pom.xml, которым можно поделиться?
Благодарю.
2 ответа
- Там нет config.xml, вам нужно настроить launch4j внутри вашего файла pom.xml.
- Вы можете использовать maven-assembly-plugin, но я рекомендую вам использовать maven-shade-plugin.
- Не нужно указывать установку launch4j, этот плагин работает на 100% maven.
- Конечно. Следует конфигам shade и launch4j, которые я использую, которые генерируют два exe, один консоль и один графический интерфейс, используя разные основные классы:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached> <!-- Make the shaded artifact not the main one -->
<shadedClassifierName>shaded</shadedClassifierName> <!-- set the suffix to the shaded jar -->
</configuration>
</plugin>
<plugin>
<groupId>org.bluestemsoftware.open.maven.plugin</groupId>
<artifactId>launch4j-plugin</artifactId>
<version>1.5.0.0</version>
<executions>
<!-- GUI exe -->
<execution>
<id>l4j-gui</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>gui</headerType>
<outfile>target/app-gui.exe</outfile>
<jar>target/${artifactId}-${version}-shaded.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
<errTitle>App Err</errTitle>
<classPath>
<mainClass>package.AppGUI</mainClass>
</classPath>
<icon>src/main/resources/icons/exeIcon.ico</icon>
<jre>
<minVersion>1.5.0</minVersion>
<maxVersion>1.6.0</maxVersion>
<initialHeapSize>128</initialHeapSize>
<maxHeapSize>1024</maxHeapSize>
</jre>
<versionInfo>
<fileVersion>1.0.0.0</fileVersion>
<txtFileVersion>1.0.0.0</txtFileVersion>
<fileDescription>Desc</fileDescription>
<copyright>C</copyright>
<productVersion>1.0.0.0</productVersion>
<txtProductVersion>1.0.0.0</txtProductVersion>
<productName>Product</productName>
<internalName>Product</internalName>
<originalFilename>App.exe</originalFilename>
</versionInfo>
</configuration>
</execution>
<!-- Command-line exe -->
<execution>
<id>l4j-cli</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>console</headerType>
<outfile>target/app-cli.exe</outfile>
<jar>target/${artifactId}-${version}-shaded.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
<errTitle>App Err</errTitle>
<classPath>
<mainClass>package.AppCLI</mainClass>
</classPath>
<icon>src/main/resources/icons/exeIcon.ico</icon>
<jre>
<minVersion>1.5.0</minVersion>
<maxVersion>1.6.0</maxVersion>
<initialHeapSize>128</initialHeapSize>
<maxHeapSize>1024</maxHeapSize>
</jre>
</configuration>
</execution>
</executions>
</plugin>
В качестве альтернативы, вы можете опустить тег 'jar' в launch4j-plugin и удалить дополнительные конфиги shade-plugin, но имейте в виду, что это заменит основной jar потока (без встроенных зависимостей) на затененный jar (со встроенным зависимости), и этот будет установлен в вашем локальном репо или использован в реакторе при необходимости.
Чтобы узнать, как определить основной класс для плагина Shade, см. http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html.