您当前所在位置:首页安装教程IDEA、WiXToolset、Maven项目打包安装程序

IDEA、WiXToolset、Maven项目打包安装程序

更新:2023-08-20 08:16:26编辑:tooool归类:安装教程人气:65

在IDEA中把基于Maven的Java项目(Maven项目)打包成可执行的JAR包,有两种方式,一是把项目的所有第三方依赖和主程序构建成一个JAR包,通过这种方式构建出来的JAR包,会包含自己写的代码编译后的所有class文件,第三方依赖,Maven配置文件(pom.properties+pom.xml),和存储了jdk版本、包含有main函数的主类等基本信息的清单文件MANIFEST.MF,这样的JAR包在配置了Java环境的平台中可以独立运行。二是把项目的主程序构建成JAR包,并把项目的所有第三方依赖存储在lib文件夹中,JAR包除了第三方依赖外和第一种方式的差不多,通过这种方式构建出来的JAR包会包含自己写的代码编译后的所有class文件,而lib文件夹则包含所有的第三方依赖JAR包,运行的条件和第一种方式的一样,但它需要把JAR包和lib文件放在同一级的目录中。

IDEA、WiXToolset、Maven项目打包安装程序

在打包Maven项目前,需要在Maven项目的pom.xml文件中的project->build->plugins节点下添加如下的配置内容以进行项目的打包(mainClass标签中的内容是项目启动类,即包含了主函数main的类)。此处以打包HelloWorld项目为例,如下为两种方式的Maven配置内容。

第一种方式

把项目的所有第三方依赖和主程序构建成一个JAR包

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>HelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <!-- 第一种方式:把所有依赖和主程序打成一个JAR包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>sample.AppMain</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <properties> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> <javafx.version>15</javafx.version> </properties> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>${javafx.version}</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>${javafx.version}</version> </dependency> </dependencies> </project>

第二种方式

把项目的主程序构建成JAR包,把项目的所有第三方依赖存储在lib文件夹中

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>HelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <!-- 第二种方式:生成主程序JAR包和依赖lib文件夹 --> <!-- 设置程序主类和依赖文件夹 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>sample.AppMain</mainClass> </manifest> </archive> </configuration> </plugin> <!-- 拷贝依赖的jar包到lib文件夹 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> <properties> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> <javafx.version>15</javafx.version> </properties> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>${javafx.version}</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>${javafx.version}</version> </dependency> </dependencies> </project>

根据实际情况选择一种打包方式,添加了配置内容并保存后,在IDEA中,选中目标Maven项目,点击clean清除再点package即可进行打包。打包完成后,会在项目文件夹的target文件夹中看到构建出来的JAR包。此处,选择第一种方式,如下,构建生成的JAR包是HelloWorld-1.0-SNAPSHOT.jar

双击此HelloWorld-1.0-SNAPSHOT.jar包,发现,是可以正常运行的,如果不能请看jar不能双击运行(命令行可以执行)的解决方案

下载并安装WiX

https://wixtoolset.org/releases/下载 WiX 3.0 或更高版本,有几种版本,建议直接下载exe版本直接安装,如果下载的压缩包,将其解压至合适的位置,比如D:\javafx\wix311-binaries,再把bin目录(包含了各种.exe命令的文件夹),即把D:\javafx\wix311-binaries添加到path中,如此,就完成了WiX的安装与配置。如下为WiX的安装目录。

基于jpackage命令打包可安装程序

在Windows系统中使用jpackage命令打包项目之前,需要完成上述的两步程序,一是把Java项目导出为可执行的JAR包(检测JAR包是否可执行的命令是:java -jar demo.jar,如果是GUI程序,直接双击之即可,如果不能请看jar不能双击运行(命令行可以执行)的解决方案 ),二是下载并安装WiX,此处安装的是WiX v3.11.2。完成这两步后,即可在Windows中生成安装文件了(.exe)。打开cmd命令行窗口,并定位至Java项目所在的目录,此处的是E:\万事屋\HelloWorld,然后输入如下的命令:

jpackage --input target --main-jar HelloWorld-1.0-SNAPSHOT.jar --vendor wd

其中,--input指定了JAR包所在的目录,target表示HelloWorld-1.0-SNAPSHOT.jar包在target目录下。--main-jar指定了JAR包的名称,此处的是HelloWorld-1.0-SNAPSHOT.jar--vendor指定了程序的发布者,此处的是wd(不一定是wd,它还可以是其它发布者名称),注意,如果命令中没有加上vendor wd,Windows会发生311错误。打包完成后,会在HelloWorld目录中生成.exe文件,此处的是AppMain-1.0.exe,名称默认是main函数所在的类名,版本是1.0。点击,会直接进行安装,安装的过程中不会允许自己选择安装目录,而是默认安装到C:\Program Files目录中。如果想卸载它,可如正常程序一样到控制面板\程序\程序和功能进行卸载。

如果想进一步完善打包的.exe文件,如使其名称可以自定义,使其在安装时可以添加 “选择安装路路径”,使其在桌面中添加快捷键等等,可使用如下的命令:

jpackage --name HelloWorld --input target --main-jar HelloWorld-1.0-SNAPSHOT.jar --vendor wd --win-dir-chooser --win-shortcut --win-menu-group "HelloWorld" --win-menu

其中,--name指定了.exe文件的名称,--win-dir-chooser指定了安装.exe程序时会添加 “选择安装路路径”,--win-shortcut指定了会在桌面添加快捷键,--win-menu-group指定了启动该应用程序所在的菜单组。--win-menu指定了把程序的快捷方式添加到系统菜单中(更多的打包命令可参考官方文档)。

至此,基于jpackage命令打包可安装程序的各个步骤就完成了,结果证明,打包好的可安装程序也可以在没有配置Java环境的操作系统中安装和运行。

我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

windows10系统下阿里旺旺无法正常登录如何解决 消息证实:微软将于明年3月发布Win10 RedStone 2正式版

游客 回复需填写必要信息