当前位置: 首页 > 面试题库 >

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

罗昕
2023-03-14
问题内容

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

我发现Alakai的插件为Launch4j。我已经使用Maven创建了一个简单的Hello
World应用程序。我尝试使用Alakai提供的配置示例,但是在编译项目时,我得到:

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

不幸的是,Alakai的文档非常有限,使用Googling找不到很多东西。

  • 有谁知道应该在哪里设置Launch4j config.xml?在项目内吗?是否在单独的目录中?
  • 我需要使用组装插件吗?
  • 我已经在PC上安装了Launch4j。我需要在pom.xml中指定安装目录吗?如果是,怎么办?
  • 有没有人可以分享可操作的pom.xml示例/示例?

谢谢。


问题答案:
  1. 没有config.xml,您需要在pom.xml文件中配置launch4j。
  2. 您可以使用maven-assembly-plugin,但是我建议您使用maven-shade-plugin。
  3. 无需指定launch4j安装,此插件可以100%运行Maven。
  4. 当然。遵循我使用的shade和launch4j配置,使用不同的主类生成两个exe,一个控制台和一个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>

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



 类似资料:
  • 我已经用Gradle创建了一个JavaFX应用程序,并希望将它及其所有依赖项和JRE导出到exe中,最好的方法是什么? 我尝试使用Gradle-launch4j提供的快速启动,但exe没有启动,而是在IDE中启动,当我从命令行运行时,我得到错误

  • 我也有和这里一样的问题。我想把swagger整合到一个非Spring靴项目中。我按照回答中给出的步骤使用了springfox,但是我在服务器启动时得到了以下错误: 这些是添加的依赖项: 更新:所以我想我错过了jackson fasterxml依赖项。我拿着pom到处闲逛。xml,错误消失了。仍在努力关注造成问题的确切依赖关系。 但是尽管这个错误消失了,另一个错误又出现了:

  • 我将和作为测试依赖项: 我的集成测试命名正确(在、或之后,默认情况下由Failsafe包含,默认情况下由Surefire排除)。 有什么方法可以使用JUnit5测试和Failsafe吗?

  • 我正在进行集成测试,但由于某些原因,maven failsafe插件没有运行。下面是用于集成测试的概要文件。测试类的名称是AppSmokeTest。java@测试正在用于测试。 我看过多篇关于这个问题的帖子 我试着在build标签中运行插件。 我尝试添加 我也尝试过运行maven failsafe插件2.18.1版,因为我看到有人认为它对他们有用。

  • 我有一个多模块的项目,有两个模块:war和ear模块。我正在尝试使用Maven发行版插件来管理发行版。 我的配置到目前为止... 父POM: war模块POM: ear模块POM: 正如您看到的表单日志,test-war-0.0.1-sources.jar正在上传两次。这是为什么?我怎样才能编辑我的配置,使它只上传一次?

  • 我已经创建了这个控制器 报告consultas.jrxml位于folded resources上 当我运行te应用程序并运行endpoint时,我会出现以下错误: 你能帮我吗?