当前位置: 首页>编程语言>正文

maven jpa Maven jpackage

软件基础

Windows 10、JDK-14.0.2、Maven 3.6.3、NetBeans 12.0、WiX Toolset v3.11.2

基于NetBeans和Maven打包Java项目

在NetBeans中把基于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文件放在同一级的目录中。

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

第一种方式

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

<!-- 第一种方式:把所有依赖和主程序打成一个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>com.ym.ui.MyLabel</mainClass>  
            </manifest>  
        </archive>  
    </configuration>  
    <executions>  
        <execution>  
            <id>make-assembly</id>  
            <phase>package</phase>  
            <goals>  
                <goal>assembly</goal>  
            </goals>  
        </execution>  
    </executions>  
</plugin>
第二种方式

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

<!-- 第二种方式:生成主程序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>com.ym.ui.MyLabel</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>

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

maven jpa Maven jpackage,maven jpa Maven jpackage_jdk-14.0.2,第1张

双击此JavaUiLib-1.0-SNAPSHOT.jar包,发现,是可以正常运行的,当然,它还不能在没有配置Java环境的操作系统中运行。

maven jpa Maven jpackage,maven jpa Maven jpackage_可安装程序_02,第2张

下载并安装WiX

https://wixtoolset.org/releases/下载 WiX 3.0 或更高版本,然后类似添加jdk的bin一样,将它的bin目录添加到path。此处下载的WiX是wix311-binaries.zip,将其解压至合适的位置,此处的是D:\Software\Java\wix311-binaries,再把bin目录(包含了各种.exe命令的文件夹),即把D:\Software\Java\wix311-binaries添加到path中,如此,就完成了WiX的安装与配置。如下为WiX的安装目录。

maven jpa Maven jpackage,maven jpa Maven jpackage_可安装程序_03,第3张

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

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

jpackage --input JavaUiLib\target --main-jar JavaUiLib-1.0-SNAPSHOT.jar --vendor ym

maven jpa Maven jpackage,maven jpa Maven jpackage_maven jpa_04,第4张

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

生成在NetBeansProjects目录中的MyLabel-1.0.exe文件大小为45MB。

maven jpa Maven jpackage,maven jpa Maven jpackage_Maven项目_05,第5张

安装到C:\Program FilesMyLabel程序的大小是123MB。

maven jpa Maven jpackage,maven jpa Maven jpackage_jdk-14.0.2_06,第6张

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

jpackage --name demo --input JavaUiLib\target --main-jar JavaUiLib-1.0-SNAPSHOT.jar --vendor ym --win-dir-chooser --win-shortcut --win-menu-group "demo" --win-menu

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

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

官方的打包命令:https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html



https://www.xamrdz.com/lan/5ut1987324.html

相关文章: