文章目录
- 前言
- 1、IDEA打包工具:Artifacts
- 1.1 创建Artifacts
- 1.2 选择第三方jar文件
- 1.3 打包Artifacts
- 1.4 测试jar包
- 2、maven-shade-plugin
- 2.1、pom文件添加
- 2.2、打包
- 2.3、测试jar包
- 总结
前言
当我们编写完Java程序后,为了提高执行效率通常会将应用程序打包成JAR(Java Archive)包。JAR包中的类文件经过预编译和优化,可以直接被Java虚拟机(JVM)执行,而无需再次编译。这样可以避免重复的编译过程,减少了启动时间和运行时的开销。
为了保证生成的JAR包可以直接在虚拟机中运行,需要采用带依赖的打包方式。本文提供了两种常用的打包方式:
- IDEA自带的打包工具: Artifacts;
- 使用pom引入:maven-shade-plugin进行打包。
1、IDEA打包工具:Artifacts
1.1 创建Artifacts
使用快捷键(Ctrl+Alt+Shift+S)可以快速打开项目的Project Structure。
按照Artifacts==> “+” ==> “JAR” ==> "From modules with dependencies"的顺序
点击Main Class 。在Select Main Class==>Search by Name中选择选择程序的入口函数。
再点击上图的Ok,创建得到的artifacts。
1.2 选择第三方jar文件
通过 “+” 或者 “-” 选择需要打入artifacts的第三方jar文件,如图:
Extracted后的JAR包是指从Jar包中提取出来的已经解压的文件,通常包括类文件、资源文件等等。如果没有这些文件,直接运行JarAR包会导致无法加载运行所需的类文件,从而提示类找不到的错误。
选择完第三方Jar文件后,点击Apply和OK,保存配置信息。
1.3 打包Artifacts
在菜单栏目找到Build,选择Build Artifacts。
最后窗口,点击Build们就可以生成JAR包了。
打包后的位置在左侧的out中。
1.4 测试jar包
在jar包位置,右键选择Open in ==> Explorer ;
来到jar包的位置,在上方的地址栏直接输入“cmd”
执行命令:
java -jar <pack-name>
<pack-name>:为要执行的jar包名称
例如:
java -jar emSystem_install_UI.jar
执行结果。
2、maven-shade-plugin
我个人更喜欢使用maven-shade-plugin进行打包。它能够将Java项目打包成可执行的JAR文件,并自动包含所有依赖项,从而无需单独安装和配置所有的依赖项。
2.1、pom文件添加
在pom文件中加入以下内容:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.4.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.kbdct.swing.frame.panelSysAuth.test.TestMainSecond</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>
<groupId>、<artifactId> 和 <version> 元素指定了要使用的 Maven Shade Plugin 版本。<executions> 元素定义了一个插件执行<phase> 元素指定了这个插件执行的阶段,在这里是 package 阶段。<goals> 元素指定了要在执行时使用哪个插件(这里是 shade )。<configuration> 元素包含了 Shade Plugin 的详细配置。<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">。是一个转换器。在这个例子中,转换器的功能是:为打包的 Jar 文件生成一个 MANIFEST.MF 文件。<mainClass> 元素中指定了可执行的 Java 类,这个类将作为启动项目时的主类。
2.2、打包
按照clean==>complie==>package的顺序进行打包。
在左侧会生成target文件,里面就有可以执行的jar文件
1. “-SNAPSHOT” 后缀的 Jar 包: 原始的 Jar 包。“-SNAPSHOT” 后缀是 Maven 的一种命名规范,用于表示当前版本是一种开发中的、不稳定的版本。
2. “origin” 前缀的Jar包: 是没有经过重命名的依赖 Jar 包。这些 Jar 包通常包含项目依赖的库和框架。
3. “-SNAPSHOT-shaded” 后缀的 Jar 包: 是经过重命名的可运行 Jar 包。这个重命名避免了与其他依赖项名称冲突。在其中的MANIFEST.MF 文件中也包含了正确的主类信息。
2.3、测试jar包
测试的过程与1.4部分同理。建议运行-1.0-SHAPSHOT-shaded.jar结尾的jar包,此处直接展示测试结果。
执行命令:
java -jar <pack-name>
<pack-name>:为要执行的jar包名称
例如:
java -jar emSystem_install_UI-1.0-SHAPSHOT-shaded.jar
执行结果。
总结
介绍了两种打包方法:
- IDEA打包工具:Artifacts
- maven-shade-plugin插件