SpringBoot分离打Jar包的两种配置方式

Spring Boot 是一种快速创建独立的、基于Spring的应用程序的方式,具有代码少、配置简单、开发效率高、开箱即用等特点。在实际应用中,我们通常需要将 Spring Boot 应用程序打包为一个可执行的 jar 包,以方便进行部署和运行。而分离打 jar 包则是将引用的依赖库全部打包进来的方式,使得打包后的 jar 包可以直接运行,不需要依赖外部的类库文件。

下面我们将讲解 Spring Boot 分离打 jar 包的两种配置方式。

配置方式一

在 pom.xml 文件中添加以下代码:

<!-- Maven Shade Plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <finalName>${project.artifactId}-${project.version}</finalName>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
        </execution>
    </executions>
</plugin>

执行 mvn package 命令,则可以生成一个分离打的可执行 jar 包。

配置方式二

在 pom.xml 文件中添加以下代码:

<!-- Maven Assembly Plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>

首先配置项目的 <mainClass> 标签,指定程序入口。然后执行 mvn clean package 命令,则可以生成一个分离打的可执行 jar 包。

以上两种配置方式均可以实现 Spring Boot 分离打 jar 包的效果,开发人员可以根据实际需求选择使用。

下面给出两个示例,分别使用上述两种配置方式生成分离打的可执行 jar 包。

示例一:使用 Maven Shade Plugin 生成分离打的可执行 jar 包

在项目根目录下创建以下 demo.java 文件:

package com.example.demo;

public class demo {
    public String sayHello(String name) {
        return "Hello, " + name + "!";
    }

    public static void main(String[] args) {
        demo d = new demo();
        System.out.println(d.sayHello("World"));
    }
}

在 pom.xml 文件中添加以下代码:

<groupId>com.example</groupId>
<artifactId>maven-shade-plugin-demo</artifactId>
<version>1.0.0</version>

<!-- Maven Shade Plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <finalName>${project.artifactId}-${project.version}</finalName>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
        </execution>
    </executions>
</plugin>

执行 mvn package 命令,则可以在 target 目录下生成一个名为 maven-shade-plugin-demo-1.0.0.jar 的可执行 jar 包。在命令行中输入以下命令则可以执行该 jar 包:

java -jar maven-shade-plugin-demo-1.0.0.jar

如果一切正常,则控制台会输出以下内容:

Hello, World!

示例二:使用 Maven Assembly Plugin 生成分离打的可执行 jar 包

在项目根目录下创建以下 demo.java 文件:

package com.example.demo;

public class demo {
    public String sayHello(String name) {
        return "Hello, " + name + "!";
    }

    public static void main(String[] args) {
        demo d = new demo();
        System.out.println(d.sayHello("World"));
    }
}

在 pom.xml 文件中添加以下代码:

<groupId>com.example</groupId>
<artifactId>maven-assembly-plugin-demo</artifactId>
<version>1.0.0</version>

<!-- Maven Assembly Plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.demo.demo</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>

执行 mvn clean package 命令,则可以在 target 目录下生成一个名为 maven-assembly-plugin-demo-1.0.0-jar-with-dependencies.jar 的可执行 jar 包。在命令行中输入以下命令则可以执行该 jar 包:

java -jar maven-assembly-plugin-demo-1.0.0-jar-with-dependencies.jar

如果一切正常,则控制台会输出以下内容:

Hello, World!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot分离打Jar包的两种配置方式 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Easyui 关闭jquery-easui tab标签页前触发事件的解决方法

    如果你使用 EasyUI 来构建 Web 应用程序,你或许会遇到这样的情况:在关闭 tab 标签页前需要做一些操作,例如弹出对话框进行确认、保存数据等。那么如何实现 在关闭 EasyUI 的 Tab 标签页前触发事件呢?以下是完整的攻略步骤: 1. 绑定 onBeforeClose 事件 在使用 EasyUI Tabs 的时候,我们可以通过绑定 onBefo…

    Java 2023年6月15日
    00
  • Spring Boot教程之必须了解的核心概念

    下面我将为你讲解Spring Boot教程之必须了解的核心概念的完整攻略。 Spring Boot教程之必须了解的核心概念 Spring Boot是一个基于Spring Framework的快速开发框架,它可以大大简化Spring应用的初始配置。在学习Spring Boot之前,我们需要了解一些核心概念以便更好地理解和应用。 1. Spring Boot的自…

    Java 2023年5月15日
    00
  • greenbrower用到的function.js代码集合第2/2页

    “greenbrower用到的function.js代码集合第2/2页”是一个由GreenBrowser浏览器作者开发的JavaScript函数库,可以帮助开发者快速开发网页或者扩展浏览器功能。 以下是对该库的详细讲解: 下载并引入库文件 首先,你需要下载并引入该函数库到你的项目中。该函数库的下载链接为:http://greenbrowser.sourcef…

    Java 2023年6月16日
    00
  • 组织树查询-Jvava实现(递归)

    1.首先查询出组织机构 就是一个简单的查询 List<Dept> deptList = mapper.getDeptList(); Map<Long, OrgNode> nodeMap = new HashMap<>(); List<Long> rootIds = new ArrayList<>()…

    Java 2023年4月19日
    00
  • JDK8 中Arrays.sort() 排序方法详解

    JDK8 中 Arrays.sort() 排序方法详解 简介 Arrays.sort() 是 Java 中用于对数组进行排序的方法之一。该方法可用于对数字数组进行快速排序,也可用于对字符串数组进行字典序排序等。本文将详细讲解 JDK8 中 Arrays.sort() 排序方法的使用,包括参数、返回值、排序算法等。 方法参数 Arrays.sort() 方法有…

    Java 2023年5月26日
    00
  • 使用Spring注入Hibernate验证框架

    使用Spring注入Hibernate验证框架是一种有效的方式,可以在应用程序中实现表单验证。下面是“使用Spring注入Hibernate验证框架”的完整攻略,包括必要的步骤和示例。 步骤一:导入所需依赖项 首先,在您的应用程序中添加依赖项以使用Spring和Hibernate框架。您可以在Maven或Gradle中添加以下依赖项来实现此目的。 Maven…

    Java 2023年5月19日
    00
  • 详解Java ArrayList类

    详解Java ArrayList类 简介 Java集合框架提供了多种集合类,包括List、Set、Map等。其中,List是按照插入顺序维护元素的集合,而ArrayList是List接口的具体实现之一,同时也是使用最广泛的集合类之一。ArrayList类继承自AbstractList,实现了List、RandomAccess、Cloneable和Serial…

    Java 2023年5月26日
    00
  • Maven聚合开发实例详解

    Maven聚合开发实例详解 Maven是一个Java项目管理工具,可以自动构建项目,管理依赖关系等。它提供了聚合开发的功能,可以将多个小项目或模块组合成一个大项目。 本文将详细讲解Maven聚合开发的实例,包括以下内容: 聚合模块的创建 聚合模块的配置 子模块的创建 子模块的依赖配置 打包和部署 聚合模块的创建 首先,我们需要创建一个聚合模块作为我们的项目根…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部