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!
阅读剩余 73%

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

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

相关文章

  • JAVA 自定义线程池的最大线程数设置方法

    下面是详细讲解Java自定义线程池的最大线程数设置方法的攻略。 什么是线程池 线程池是一种基于池化思想的线程使用方式。以线程池的方式管理线程,从而避免线程创建和销毁时造成的性能损耗,提高应用程序的性能和稳定性。在Java中,提供了Executor和ExecutorService这两个接口,通过这两个接口可以创建线程池。 Java自定义线程池的创建 在Java…

    Java 2023年5月18日
    00
  • Docker(黑马spring cloud笔记)详解

    Docker(黑马spring cloud笔记)详解 什么是Docker? Docker是一种基于容器技术的开源虚拟化平台,在不同的操作系统之间运行应用程序。通过Docker,我们可以将应用程序及其依赖项打包到一个简单的容器中,然后转移到任何地方并快速部署。 Docker的优势 轻量化:相对于传统虚拟化技术,Docker容器启动速度更快,占用的系统资源更少,…

    Java 2023年6月2日
    00
  • 排序算法图解之Java冒泡排序及优化

    我来为你详细讲解“排序算法图解之Java冒泡排序及优化”的完整攻略。 简介 排序算法在计算机学科中是非常重要的内容,冒泡排序就是其中的一种,设计简单,易于理解和实现,其时间复杂度为O(n^2)。本篇文章主要介绍了Java语言实现冒泡排序的方式以及针对普通冒泡排序算法的优化。 冒泡排序 冒泡排序是稳定排序中的一种,其基本操作是将相邻的元素进行比较和交换,每次循…

    Java 2023年5月19日
    00
  • Springboot添加jvm监控实现数据可视化

    Spring Boot提供了一个Actuator模块,可以用来实现JVM监控并将监控数据可视化展示。下面是实现的完整攻略: 1. 添加JVM监控依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <arti…

    Java 2023年5月19日
    00
  • SSH框架网上商城项目第22战之银行图标以及支付页面显示

    SSH框架网上商城项目的支付页面显示需要显示银行图标,具体步骤如下: 银行图标的获取 首先需要获取银行图标。可以通过以下方式获取: 在网上搜寻对应银行的官网,找到银行的Logo并下载; 在开发者工具中查看银行网页中的Logo图片地址,然后下载该图片; 下载的银行图标需要保存在项目的资源目录中,如webapp/resources/img/bank/。 在支付页…

    Java 2023年5月20日
    00
  • 详解spring mvc(注解)上传文件的简单例子

    Spring MVC是一种常用的Web框架,它提供了一种方便的方式来处理HTTP请求和响应。在Spring MVC中,我们可以使用注解来处理文件上传。本文将详细讲解“详解Spring MVC(注解)上传文件的简单例子”的完整攻略,并提供两个示例说明。 步骤一:添加依赖 我们需要在pom.xml文件中添加以下依赖: <dependency> &lt…

    Java 2023年5月18日
    00
  • 教你几个 Java 编程中使用技巧

    教你几个 Java 编程中使用技巧 Java 是一门功能强大的编程语言,拥有广泛的应用领域。在 Java 编程过程中,利用一些有效的技巧可以提高编程的效率和代码的质量。下面介绍几个 Java 编程中使用技巧。 1. 善用注释 在编写 Java 代码时,充分利用注释可以提高代码的可读性和可维护性。注释应包含对代码的解释和说明,尤其是对数据结构和算法的讲解。在编…

    Java 2023年5月23日
    00
  • Java 数据结构与算法系列精讲之字符串暴力匹配

    Java 数据结构与算法系列精讲之字符串暴力匹配 1. 基本概念 字符串匹配是一种非常常见的算法问题。给定一个字符串 A 和一个模式串 B,要求在字符串 A 中查找是否有 B 出现的位置,如果有,则返回第一次出现的位置,否则返回-1。字符串暴力匹配就是一种解决此问题的算法,它的基本思路就是从字符串 A 中从头开始一个字符一个字符地去匹配模式串 B 的每个字符…

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