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日

相关文章

  • JSP的运行内幕

    JSP的运行内幕 什么是JSP? JSP(JavaServer Pages)是一种基于Java技术的动态Web页面开发技术,它是Sun Microsystems公司提出的用于Web应用程序开发的一套技术规范。JSP技术的出现,大大简化了Web开发中HTML和Java代码的耦合度,使得Web开发变得更容易、更高效。 JSP的运行过程 JSP页面的运行过程可以分…

    Java 2023年5月30日
    00
  • java的Hibernate框架报错“SessionException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“SessionException”错误。这个错误通常是由于以下原因之一引起的: 会话已关闭:如果您尝试在会话关闭后使用会话,则可能会出现此错误。在这种情况下,需要确保在使用会话之前打开会话,并在使用完毕后关闭会话。 事务已回滚:如果您尝试在事务已回滚后使用会话,则可能会出现此错误。在这种情况下,需要确保在…

    Java 2023年5月4日
    00
  • 关于Java实现HttpServer模拟前端接口调用

    关于Java实现HttpServer模拟前端接口调用,可以按照以下步骤进行: 一、实现HttpServer 1.引入HttpServer依赖,例如使用Jetty <dependencies> <dependency> <groupId>org.eclipse.jetty</groupId> <artifa…

    Java 2023年5月26日
    00
  • 什么是Java认证授权?

    Java认证和授权是Java安全机制中的两个重要概念。认证(Authentication)是指验证用户身份的过程,确定他们是否有权访问一些特定的资源或服务。而授权(Authorization)是指在确定用户身份之后,确定他们是否有权执行特定的操作。Java提供了一些API和框架,用于简化和处理身份验证和授权的复杂性。 一些常见的Java认证授权机制包括: J…

    Java 2023年5月11日
    00
  • jsp 从web.xml读取连接数据库的参数

    让我来详细讲解一下“jsp 从web.xml读取连接数据库的参数”的完整攻略。 什么是web.xml web.xml是一个配置文件,通常位于WEB-INF目录下,它是Java Web应用程序中最常见的配置文件之一,它用于配置Web应用的许多方面,包括 Servlet、JSP、Filter、Listener、数据库连接、安全性等等。 读取web.xml中的数据…

    Java 2023年6月15日
    00
  • SpringBoot如何整合mybatis-generator-maven-plugin 1.4.0

    首先,我们需要在项目中添加MyBatis Generator Maven插件,该插件可自动化生成MyBatis的mappper、model和example类。下面是整合MyBatis Generator Maven插件的步骤: 添加插件依赖 在pom.xml文件的插件列表中,添加MyBatis Generator Maven插件的依赖: <plugin…

    Java 2023年5月19日
    00
  • 详解tomcat部署静态html网站方法

    下面我将为你详细讲解“详解tomcat部署静态html网站方法”的完整攻略。 步骤一:下载和安装Tomcat服务器 首先需要下载Tomcat服务器并安装到本地。 步骤二:创建静态html网站文件夹 在本地创建一个文件夹,用于存放静态html网站的相关文件。例如,我们可以创建一个名为“mywebsite”的文件夹,用于存储我们的静态html网站文件。 步骤三:…

    Java 2023年5月19日
    00
  • 对象的访问包括哪些操作?

    对象的访问是指通过对象名或引用去访问对象的属性和方法,这是面向对象编程中的基本操作。对象的操作包括下面几个部分: 访问对象的属性 访问对象的属性是对象访问的一部分,属性是指一个对象所具有的特征或状态。可以通过.操作符来访问对象的属性,示例如下: class Person: def __init__(self, name, age): self.name = …

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