maven项目打jar包并包含所有依赖详细教程

下面为你详细讲解如何利用Maven项目打包成Jar并包含所有依赖的详细教程。

一、前提条件

在进行下面的操作前,请确保你的开发环境中已经安装了Maven,并且已经正确配置了Maven的环境变量。

二、maven打包命令

在Maven项目的根目录下运行以下命令:

mvn clean package

此命令将在target目录下生成一个Jar包文件。当然,也可以使用以下命令指定Jar包的名称:

mvn clean package -DfinalName=myapp.jar

三、maven打包并包含所有依赖

Maven提供了两种常见的方式来打包并包含所有依赖,分别是:

1. Maven Shade Plugin

Maven Shade Plugin可以将项目中所有依赖合并到一个Jar包中,方便部署和运行。

在项目的pom.xml文件中添加如下代码:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

然后在命令行中执行以下命令:

mvn clean package shade:shade

此命令将在target目录下生成一个Jar包文件,并且包含了所有的依赖。

2. Maven Assembly Plugin

Maven Assembly Plugin可以将项目中所有依赖打包成一个Jar包,另外,此插件还可以将打包好的Jar包与配置文件等一起打包。

在项目的pom.xml文件中添加如下代码:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>3.3.0</version>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.example.Main</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

然后在命令行中执行以下命令:

mvn clean package assembly:single

此命令将在target目录下生成一个Jar包文件,并且包含了所有的依赖。

四、示例说明

示例1:使用Maven Shade Plugin打包

假设我们有一个名为myapp的Maven项目,包含了一个Main类,如下所示:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

此项目中还依赖了JUnit和Log4j这两个库,需要打包成一个Jar包,并且包含了所有的依赖。

  1. 首先在项目的pom.xml文件中添加上述的Maven Shade Plugin代码。

  2. 然后打开命令行,进入到项目的根目录下,运行以下命令进行打包:

mvn clean package shade:shade

  1. 执行以上命令后,在target目录下应该会生成一个myapp-1.0-SNAPSHOT.jar的文件,此文件包含了Main类以及所有依赖库。

  2. 运行以下命令可以验证是否打包成功:

java -jar myapp-1.0-SNAPSHOT.jar

  1. 命令执行后,输出如下所示:

Hello World!

示例2:使用Maven Assembly Plugin打包

由于使用Maven Shade Plugin和Maven Assembly Plugin打包成jar包的过程类似,所以这里只提供一个简单的例子。

假设我们有一个名为myapp2的Maven项目,包含了一个Main类,如下所示:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, this is myapp2!");
    }
}

此项目还依赖了Hibernate和MySQL这两个库,需要打包成一个Jar包,并且包含了所有的依赖。

  1. 首先在项目的pom.xml文件中添加上述的Maven Assembly Plugin代码。

  2. 然后打开命令行,进入到项目的根目录下,运行以下命令进行打包:

mvn clean package assembly:single

  1. 执行以上命令后,在target目录下应该会生成一个myapp2-1.0-SNAPSHOT-jar-with-dependencies.jar的文件,此文件包含了Main类以及所有依赖库。

  2. 运行以下命令可以验证是否打包成功:

java -jar myapp2-1.0-SNAPSHOT-jar-with-dependencies.jar

  1. 命令执行后,输出如下所示:

Hello, this is myapp2!

至此,我已经为你详细讲解了Maven项目打包成Jar并包含所有依赖的完整攻略,包含了两个示例说明。希望对你有所帮助,谢谢!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:maven项目打jar包并包含所有依赖详细教程 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • spring-cloud-stream结合kafka使用详解

    下面是针对“spring-cloud-stream结合kafka使用详解”的完整攻略: 介绍 Spring Cloud Stream 是一个面向流的架构,它提供了一种构建消息驱动微服务应用程序的方法。结合使用Kafka,可以实现高效、可扩展和可靠的消息传递。下面我们将详细讲解 Spring Cloud Stream 结合 Kafka 使用的完整攻略。 步骤 …

    Java 2023年5月20日
    00
  • Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

    下面我来详细讲解一下“Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例”的完整攻略。 1. 环境准备 首先,我们需要准备好以下环境: JDK 1.8 Spring Boot 2.3.4.RELEASE Spring Data JPA 2.3.4.RELEASE MySQL 8.0.21 Maven 3.…

    Java 2023年5月20日
    00
  • java 用泛型参数类型构造数组详解及实例

    Java 用泛型参数类型构造数组详解及实例 在 Java 中,我们可以使用泛型来创建具有不同类型的集合。但有时候,我们需要创建一个数组,每个元素的类型都不一样,这时候,我们可以使用泛型来创建一个具有不同类型的数组。 泛型数组概述 Java 中是不允许直接使用泛型类型实例化数组,例如下面的代码会报错: List<Integer>[] arr = n…

    Java 2023年5月26日
    00
  • jsp页面常用的查询及显示方法分析

    JSP页面常用的查询及显示方法分析 JSP是一种用于创建动态Web内容的Java技术。在JSP页面中,查询和显示数据是非常常见的任务,下面将介绍JSP页面中常用的两种查询和显示方法。 1. 使用JDBC查询数据库并将数据显示在JSP页面上 步骤1:导入JDBC驱动程序和建立数据库连接 在JSP页面中,首先需要导入JDBC驱动程序,并建立与数据库的连接。这可以…

    Java 2023年6月15日
    00
  • 支持IE和firefox的js代码美化加亮源码

    首先,我们需要了解什么是代码美化加亮。代码美化加亮是通过对代码进行格式化和着色,使代码看起来更加美观、易读和可维护的技术。在项目开发中,我们常常需要对JS代码进行美化加亮,以便于代码的审查、调试和维护。 操作步骤: 1.选择一个JS代码美化工具,并下载相关工具。本例中我们选择支持IE和Firefox的CodeMirror代码编辑器。2.引入jQuery和Co…

    Java 2023年6月15日
    00
  • 关于fastjson的@JSONField注解的一些问题(详解)

    关于 fastjson 的 @JSONField 注解的一些问题(详解) fastjson 是一款非常优秀的 Java 序列化/反序列化框架,在序列化对象时使用 @JSONField 注解可以定义一些序列化和反序列化时的行为,本篇文章将详细讲解 @JSONField 注解的使用方法和一些注意事项。 基本用法 @JSONField 注解可以标注在类的属性上面,…

    Java 2023年5月26日
    00
  • java多线程从入门到精通看这篇就够了

    Java多线程从入门到精通攻略 为什么要学习多线程? 如果您是Java程序员,并且希望编写高效、高性能的应用程序,那么多线程编程就是不可或缺的一部分。Java多线程编程使得我们能够在同一时间内执行多项任务,并提高了应用程序的响应速度和吞吐量。此外,Java多线程编程还为我们提供了一系列的并发编程工具,如锁、线程池等,为我们提供了更方便的编程方式。 多线程的基…

    Java 2023年5月26日
    00
  • 浅谈java异常处理之空指针异常

    浅谈Java异常处理之空指针异常 Java是一门强类型语言,也就是说变量的类型在声明过后就不能再改变,因此在编程中,经常会遇到空指针异常(NullPointerException)。本文将会对空指针异常进行详细的讲解。 空指针异常的定义 当程序试图访问一个空对象时,就会抛出空指针异常。空对象的意思是没有实例化的对象或者是一个null对象。 空指针异常的出现原…

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