Попытка интегрировать Launch4j в проект Maven с помощью плагина Alakai - PullRequest
13 голосов
/ 19 мая 2011

Я пытаюсь интегрировать создание установщика как часть процесса компиляции maven.

Я нашел Плагин Алакай для Launch4j . Я создал простое приложение Hello World, используя Maven. Я пытался использовать примеры конфигурации, предоставленные Alakai, но когда я компилирую свой проект, я получаю:

Не удалось выполнить цель org.bluestemsoftware.open.maven.plugin: launch4j-плагин: 1.5.0.0: launch4j (launch4j) для проекта Launch4j: не удалось построить исполняемый файл; пожалуйста, подтвердите ваша конфигурация Кувшин не существует -> [Помощь 1]

К сожалению, документация Алакай ограничена, и я не мог найти много с Google.

  • Кто-нибудь знает, где должен быть установлен файл Launch4j config.xml? Это в рамках проекта? Это в отдельном каталоге?
  • Нужно ли использовать плагин сборки?
  • Я установил Launch4j на свой ПК. Нужно ли указывать каталог установки в моем файле pom.xml? Если да, то как?
  • У кого-нибудь есть рабочий пример / пример pom.xml, которым можно поделиться?

Спасибо.

Ответы [ 2 ]

26 голосов
/ 01 июня 2011
  1. Там нет config.xml, вам нужно настроить launch4j внутри вашего файла pom.xml.
  2. Вы можете использовать maven-assembly-plugin, но я рекомендую вам использовать maven-shade-plugin.
  3. Не нужно указывать установку launch4j, этот плагин работает на 100% maven.
  4. Конечно. Следует конфигам 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 (со встроенными зависимостями), и этот будет установлен в вашем локальном репо или использован в реакторе при необходимости.

1 голос
/ 08 января 2012

Как определить основной класс для плагина Shade, смотрите http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html.

...