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日

相关文章

  • Java基础知识精通循环结构与break及continue

    Java基础知识精通循环结构与break及continue 循环结构是Java语言中常见的一种语句结构,它可以重复执行一段代码,直到满足某个条件才停止。Java中支持四种循环结构:for、while、do-while和增强for循环。在循环中我们还可以使用break和continue关键字来控制循环的执行过程。本文将介绍如何使用Java语言来精通循环结构以及…

    Java 2023年5月26日
    00
  • jsp下显示中文文件名及绝对路径下的图片解决方法

    下面是详细讲解“jsp下显示中文文件名及绝对路径下的图片解决方法”的完整攻略。 问题描述: 在jsp页面中,有时需要显示中文文件名或访问绝对路径下的图片,但这些操作并不是很直接,需要做一些额外的处理。 解决方案: 1. 文件名中文显示 在jsp页面中,如果要显示中文文件名,需要注意两点: 页面编码要设置为UTF-8,否则中文文件名会乱码。 使用URLEnco…

    Java 2023年6月15日
    00
  • 详解JavaWeb中的过滤器Filter

    详解JavaWeb中的过滤器Filter 过滤器的概念 过滤器Filter是Java Web中的一个组件,用于拦截HTTP请求和响应,并对请求和响应进行处理和转换。它可以在Servlet处理请求之前或之后介入,处理请求信息、过滤响应结果,完成一些类似于AOP的功能。 过滤器的作用 过滤器可以在请求和响应处理的过程中拦截并修改信息,常见的使用场景如下: 过滤敏…

    Java 2023年6月15日
    00
  • spring security认证异常后返回中文提示的问题

    下面是详细讲解“Spring Security认证异常后返回中文提示的问题”的完整攻略。 问题描述 在使用Spring Security过程中,如果认证出现异常,例如用户名或密码错误,系统返回的提示信息可能是英文的,对于像我们这样的非英语母语国家来说,这可能会给用户带来不便。所以,我们希望能够将这些提示信息修改为中文。 解决方案 为了解决这个问题,我们可以自…

    Java 2023年5月20日
    00
  • maven下载依赖失败问题及解决

    下面我将为您提供一份“maven下载依赖失败问题及解决”的详细攻略。 问题描述 在使用maven构建项目时,有时候会遇到下载依赖失败的问题。常见的问题包括: 网络连接问题,导致无法从中央仓库下载依赖 依赖库的版本问题,某些依赖库有可能被废弃或者过时 仓库不稳定或者无法访问 解决方法 针对上述问题,我们可以采取以下措施解决: 1. 检查网络连接 网络连接不畅或…

    Java 2023年5月20日
    00
  • Java对象Serializable接口实现详解

    下面是Java对象Serializable接口实现的详细攻略: 什么是Serializable接口? Serializable是Java中的一个接口,用于将Java对象转换成字节序列以便于在网络上传输或者进行持久化存储。通过实现Serializable接口,Java对象可以被序列化为一个字节数组,保存到内存或输出到磁盘或网络。实现Serializable接口…

    Java 2023年5月26日
    00
  • spring动态bean注册示例分享

    下面是详细讲解“spring动态bean注册示例分享”的完整攻略。 什么是动态bean注册 在Spring中,Bean是所有服务的基本单元。Spring容器会将所有的Bean实例化,管理和组装起来,使它们能够可以相互协作。Bean注册是向Spring容器声明Bean定义的过程,通常是在XML文件或者Java代码中进行的。 动态bean注册是指在运行时添加、修…

    Java 2023年6月15日
    00
  • 浅谈在Java中JSON的多种使用方式

    浅谈在Java中JSON的多种使用方式 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,其来源于JavaScript. 通常用于将结构化数据序列化为文本格式,可以轻松地在不同的系统中传递、存储和分析数据. JSON将数据表达为键值对的集合,具有易于阅读和编写的文本格式,易于机器解析和生成,并且良好…

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