生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin

文章目录

  • 前言
  • 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包可以直接在虚拟机中运行,需要采用带依赖的打包方式。本文提供了两种常用的打包方式:

  1. IDEA自带的打包工具: Artifacts;
  2. 使用pom引入:maven-shade-plugin进行打包。

1、IDEA打包工具:Artifacts

1.1 创建Artifacts

使用快捷键(Ctrl+Alt+Shift+S)可以快速打开项目的Project Structure。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第1张图片
按照Artifacts==> “+” ==> “JAR” ==> "From modules with dependencies"的顺序
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第2张图片

点击Main Class 。在Select Main Class==>Search by Name中选择选择程序的入口函数。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第3张图片
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第4张图片
再点击上图的Ok,创建得到的artifacts。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第5张图片

1.2 选择第三方jar文件

通过 “+” 或者 “-” 选择需要打入artifacts的第三方jar文件,如图:
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第6张图片
Extracted后的JAR包是指从Jar包中提取出来的已经解压的文件,通常包括类文件、资源文件等等。如果没有这些文件,直接运行JarAR包会导致无法加载运行所需的类文件,从而提示类找不到的错误。
选择完第三方Jar文件后,点击Apply和OK,保存配置信息。

1.3 打包Artifacts

在菜单栏目找到Build,选择Build Artifacts。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第7张图片

最后窗口,点击Build们就可以生成JAR包了。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第8张图片

打包后的位置在左侧的out中。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第9张图片

1.4 测试jar包

在jar包位置,右键选择Open in ==> Explorer ;
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第10张图片
来到jar包的位置,在上方的地址栏直接输入“cmd”
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第11张图片
执行命令:

java -jar <pack-name>
:为要执行的jar包名称

例如:

java -jar emSystem_install_UI.jar

执行结果。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第12张图片


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>
 元素指定了要使用的 Maven Shade Plugin 版本。
	 元素定义了一个插件执行
		 元素指定了这个插件执行的阶段,在这里是 package 阶段。
		 元素指定了要在执行时使用哪个插件(这里是 shade )。
		 元素包含了 Shade Plugin 的详细配置。
			。是一个转换器。在这个例子中,转换器的功能是:为打包的 Jar 文件生成一个 MANIFEST.MF 文件。
				 元素中指定了可执行的 Java 类,这个类将作为启动项目时的主类。

2.2、打包

按照clean==>complie==>package的顺序进行打包。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第13张图片

在左侧会生成target文件,里面就有可以执行的jar文件
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第14张图片

补充:使用 maven-shade-plugin 打包的项目被存储在 Maven 项目的 target 目录下,并生成三个文件:

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>
:为要执行的jar包名称

例如:

java -jar emSystem_install_UI-1.0-SHAPSHOT-shaded.jar

执行结果。
生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin_第15张图片


总结

介绍了两种打包方法:

  1. IDEA打包工具:Artifacts
  2. maven-shade-plugin插件

你可能感兴趣的:(Java基础,jar,intellij-idea,maven)