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

时间:2011-05-19 14:51:23

标签: java maven integration launch4j

我正在尝试将安装程序的生成集成为maven编译过程的一部分。

我找到了Alakai's plugin Launch4j。我使用Maven创建了一个简单的Hello World应用程序。我试图使用Alakai提供的配置示例,但是当我编译项目时,我得到:

  

无法执行目标   org.bluestemsoftware.open.maven.plugin:launch4j-插件:1.5.0.0:launch4j   项目Launch4j上的(launch4j):失败   构建可执行文件;请验证   你的配置。应用jar   不存在。 - > [帮助1]

不幸的是,Alakai的文档是有限的,我用Googling找不到多少。

  • 有谁知道应该在哪里设置Launch4j config.xml?它在项目内吗?它在一个单独的目录中吗?
  • 我是否需要使用程序集插件?
  • 我在我的电脑上安装了Launch4j。我是否需要在pom.xml中指定安装目录?如果是的话怎么样?
  • 是否有人有一个可操作的pom.xml示例/示例要共享?

感谢。

2 个答案:

答案 0 :(得分:26)

  1. 没有config.xml,您需要在pom.xml文件中配置launch4j。
  2. 你可以使用maven-assembly-plugin,但我建议你使用maven-shade-plugin。
  3. 不需要指定launch4j安装,这个插件工作100%maven。
  4. 不确定。按照我使用的shade和launch4j配置,使用不同的主类生成两个exes,一个控制台和一个gui:
  5. <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>
    

    或者,您可以省略launch4j-plugin上的'jar'标记并删除shade-plugin的额外配置,但请注意,这将替换阴影jar中的主jar(没有嵌入依赖项) (带有嵌入式依赖项),这个将安装在您的本地仓库中,或者在需要时在反应堆中使用。

答案 1 :(得分:1)

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