Maven JAR Plugin 插件使用小结

 更新时间:2026年07月15日 09:39:44   作者:prcyang  
本文详细讲解maven-jar-plugin的用法,包括配置生成可执行Jar,以及搭配maven-dependency-plugin将依赖复制到lib目录,让你的Jar包完整可运行,感兴趣的可以了解一下

1 Maven JAR Plugin 插件地址

https://maven.apache.org/plugins/maven-jar-plugin/index.html

2 Maven JAR Plugin 特点

maven-assembly-plugin: maven 生命周期 package 阶段的默认打包插件,用于将 Maven 项目打包成jar(注意该插件不会将项目中引入的依赖打进最终的 Jar 文件)

3 maven-jar-plugin 的用法

3.1 无依赖项 maven-jar-plugin 配置

<build>
	<plugins>
		<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
             <version>3.4.2</version>
            <configuration>
                <archive>
                    <manifest>
                    	<!--主类入口-->
                        <mainClass>com.yq.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
	</plugins>
</build>

以上配置是打包成可执行jar包,
如果打包成不可执行的jar包,只需不配置 mainClass 即可,如果打包成不可执行jar包,都可以不配置maven-jar-plugin插件,maven-jar-plugin 是maven 生命周期 package 阶段的默认打包插件。

3.2 有依赖项 maven-jar-plugin 配置

文章最开始已经说过,通过 maven-jar-plugin 生成 Jar 文件时,不会将依赖包函进去;因此需要配置依赖项所在位置

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.4.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <!--主类入口-->
                            <mainClass>com.yq.Main</mainClass>
                            <!--将项目的依赖位置添加到 MANIFEST.MF 中的Class-Path-->
                            <addClasspath>true</addClasspath>
                            <!--依赖的存放位置 和生成的jar放在同一级目录下-->
                            <classpathPrefix>lib/</classpathPrefix>
                            <!--是否使用-SNAPSHOT 命名版本。默认值为true-->
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

上述配置生成的 MANIFEST.MF 中多了依赖的信息:

Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.4.2
Build-Jdk-Spec: 17
Class-Path: lib/hutool-all-5.8.39.jar
Main-Class: com.yq.Main

实际并没有下载依赖到lib 目录,需要借助maven-dependency-plugin插件下载依赖到lib目录

3.3 配合maven-dependency-plugin 将依赖复制到指定位置

它可以从本地或远程存储库复制或解压构件到指定位置

  <plugin>
	  <groupId>org.apache.maven.plugins</groupId>
	  <artifactId>maven-dependency-plugin</artifactId>
	  <version>3.8.1</version>
	  <executions>
	      <execution>
	          <id>copy-dependencies</id>
	          <phase>package</phase>
	          <goals>
	              <goal>copy-dependencies</goal>
	          </goals>
	          <configuration>
	              <outputDirectory>${project.build.directory}/lib</outputDirectory>
	              <!-- 间接依赖也拷贝 -->
	              <excludeTransitive>false</excludeTransitive>
	              <!-- 依赖带上版本号  -->
	              <stripVersion>false</stripVersion>
	              <!--覆盖发布工件-->
	              <overWriteReleases>false</overWriteReleases>
	              <!--覆盖快照项目-->
	              <overWriteSnapshots>false</overWriteSnapshots>
	              <!--覆盖不存在或比源文件更旧的构建产物-->
	              <overWriteIfNewer>true</overWriteIfNewer>
	          </configuration>
	      </execution>
	  </executions>
 </plugin>

到此这篇关于Maven JAR Plugin 插件使用小结的文章就介绍到这了,更多相关Maven JAR Plugin 插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java通过XPath获取XML文件中符合特定条件的节点

    Java通过XPath获取XML文件中符合特定条件的节点

    今天小编就为大家分享一篇关于Java通过XPath获取XML文件中符合特定条件的节点,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java按字节截取带有汉字的字符串的解法(推荐)

    java按字节截取带有汉字的字符串的解法(推荐)

    下面小编就为大家带来一篇java按字节截取带有汉字的字符串的解法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • spring基础概念AOP与动态代理理解

    spring基础概念AOP与动态代理理解

    这篇文章主要为大家详细介绍了spring基础概念AOP与动态代理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Idea配置Maven阿里云镜像加速的实现

    Idea配置Maven阿里云镜像加速的实现

    这篇文章主要介绍了Idea配置Maven阿里云镜像加速的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • SpringBoot入门教程详解

    SpringBoot入门教程详解

    SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。本文将详细为大家讲讲SpringBoot是使用,需要的可以参考一下
    2022-06-06
  • 如何自定义springboot-starter日志组件供各个服务使用(系统日志优化)

    如何自定义springboot-starter日志组件供各个服务使用(系统日志优化)

    文章介绍了如何将各个微服务的接口调用日志逻辑优化为一个可共享的Spring Boot Starter,通过自定义注解和自动装配机制实现,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Mac上配置JDK 1.8的超详细流程

    Mac上配置JDK 1.8的超详细流程

    相信每个拿到MAC的小伙伴都是很欣喜的,但是由于MAC系统与WIN系统有着极大的不同,所以使用起来会有一些小困扰,这篇文章主要给大家介绍了关于Mac上配置JDK 1.8的超详细流程,需要的朋友可以参考下
    2023-11-11
  • java如何替换word/doc文件中的内容

    java如何替换word/doc文件中的内容

    docx格式的文件本质上是一个XML文件,只要用占位符在指定的地方标记,然后替换掉标记出的内容,这篇文章主要介绍了java替换word/doc文件中的内容,需要的朋友可以参考下
    2023-06-06
  • 基于SpringAI+DeepSeek实现流式对话功能

    基于SpringAI+DeepSeek实现流式对话功能

    一般来说大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户,那么问题来了,想要实现流式结果输出,后端和前端要如何配合?下来本文给出具体的实现代码,需要的朋友可以参考下
    2025-02-02
  • Web容器启动过程中如何执行Java类

    Web容器启动过程中如何执行Java类

    这篇文章主要介绍了Web容器启动过程中如何执行Java类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论