简体   繁体   English

尝试使用Alakai插件将Launch4j集成到Maven项目中

[英]Trying to integrate Launch4j in a Maven project using Alakai plugin

I am trying to integrate the generation of an installer as part of a maven compilation process. 我正在尝试将安装程序的生成集成为maven编译过程的一部分。

I have found Alakai's plugin for Launch4j . 我找到了Alakai的Launch4j 插件 I have create a simple Hello World application using Maven. 我使用Maven创建了一个简单的Hello World应用程序。 I have tried to use configuration examples provided by Alakai, but when I compile my project, I get: 我试图使用Alakai提供的配置示例,但是当我编译项目时,我得到:

Failed to execute goal org.bluestemsoftware.open.maven.plugin:launch4j-plugin:1.5.0.0:launch4j (launch4j) on project Launch4j: Failed to build the executable; 无法在项目Launch4j上执行目标org.bluestemsoftware.open.maven.plugin:launch4j-plugin:1.5.0.0:launch4j(launch4j):无法构建可执行文件; please verify your configuration. 请验证您的配置。 Application jar doesnt exist. 应用jar不存在。 -> [Help 1] - > [帮助1]

Unfortunately, Alakai's documentation is limited and I could not find much with Googling. 不幸的是,Alakai的文档是有限的,我用谷歌搜索找不到多少。

  • Does anyone know where the Launch4j config.xml should be set? 有谁知道应该在哪里设置Launch4j config.xml? Is it within the project? 它在项目内吗? Is it in a separate directory? 它在一个单独的目录中吗?
  • Do I need to use the assembly plugin? 我需要使用程序集插件吗?
  • I have installed Launch4j on my PC. 我在我的电脑上安装了Launch4j。 Do I need to specify the installation directory in my pom.xml? 我是否需要在pom.xml中指定安装目录? If yes how? 如果有,怎么样?
  • Does anyone have an operational pom.xml sample/example to share? 有没有人有一个可操作的pom.xml示例/示例来共享?

Thanks. 谢谢。

  1. There's no config.xml, you need to configure launch4j inside your pom.xml file. 没有config.xml,您需要在pom.xml文件中配置launch4j。
  2. You could use maven-assembly-plugin, but I recommend you to use maven-shade-plugin. 你可以使用maven-assembly-plugin,但我建议你使用maven-shade-plugin。
  3. Don't need to specify launch4j installation, this plugin works 100% maven. 不需要指定launch4j安装,这个插件工作100%maven。
  4. Sure. 当然。 Follows the shade and launch4j configs I use, that generates two exes, one console and one gui, using different main classes: 按照我使用的shade和launch4j配置,使用不同的主类生成两个exes,一个控制台和一个gui:

<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>

Alternatively, You can omit the 'jar' tag on launch4j-plugin and remove the extra configs of the shade-plugin, but be aware that this will replace the main jar of the flow (without embedded dependencies) by the shaded jar (with embedded dependencies), and this one will be installed on your local repo, or used in the reactor if needed. 或者,您可以省略launch4j-plugin上的'jar'标签并删除shade-plugin的额外配置,但请注意,这将替换阴影jar(具有嵌入式jar)的流的主要jar(没有嵌入式依赖项)依赖项),这个将安装在您的本地仓库,或者如果需要在反应堆中使用。

有关如何为shade插件定义主类的信息,请参阅http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM