maven 项目打jar包 并包含所有依赖「建议收藏」

maven 项目打jar包 并包含所有依赖「建议收藏」背景:基于最近项目部署,需要打jar包,然后涉及接口调用,反复测试,出现了各种问题,最后找到合理方案,特做以下总结:一、延伸知识:Springboot打jar包命令1.把之前打过的包通通干掉mvnpackageclean-Dmaven.test.skip=true2.重新打包mvnpackage-Dmaven.test.skip=true3.Springboot的打包插件<build><plugins>&

大家好,又见面了,我是你们的朋友全栈君。

背景:

基于最近项目部署,需要打jar包,然后涉及接口调用,反复测试,出现了各种问题,最后找到合理方案,特做以下总结:

一、延伸知识:Springboot打jar包命令

1.把之前打过的包通通干掉

mvn package clean -Dmaven.test.skip=true

2.重新打包

mvn package -Dmaven.test.skip=true

3. Springboot的打包插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

      起初项目框架用的SpringBoot,大家都知道,它里面是有自带打包依赖,那么问题就是,用Springboot自带的依赖打成jar包,是可以放在java环境下直接运行的,但是如果用于接口调用就行不通了。SpringBoot会自带打包插件打的包不能用。将SpringBoot会自带打包插件打的包解压后会看到它的目录结构,它把包都打到BOOT-INF这个目录下了,引用的时候我们引用不到,会报“Cannot resolve symbol”的错。

注:

JAR包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class(主类)信息。

项目所有的依赖都必须在Classpath中,其可以通过 MANIFEST.MF 指定或者隐式设置

     二、想要将打的jar包用于接口调用并且还包含项目所有依赖,不会给调用方造成引入依赖或者导入外部jar包的困扰,特有以下方法:

1.在pom.xml中引入插件

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
            <descriptorRefs>
              <!--给jar包起的别名-->
              <descriptorRef>jar-with-dependencies</descriptorRef>
             </descriptorRefs>
             <archive>
                 <manifest>
                   <addClasspath>true</addClasspath>
                   <classpathPrefix>lib/</classpathPrefix>
                     <!--添加项目中主类-->     
                    <mainClass>com.sdt.intf.client.tools.DealConnectFile</mainClass>
                 </manifest>
             </archive>
       </configuration>
       <executions>
         <execution>
             <id>make-assembly</id>
               <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
          </execution>
       </executions>
</plugin>

注:

①.添加完插件后,就可以开始打包了,可以直接操作maven

maven 项目打jar包 并包含所有依赖「建议收藏」

②.可以用命令执行:

通过mvn clean compaile package 将生成两个jar  一个是没有dependence结尾的jar,这个不包含其他依赖jar的jar包,只包含主类的依赖。

另一个是以dependence结尾jar,此jar是包含了项目中所有依赖的jar包

 maven 项目打jar包 并包含所有依赖「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150920.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月19日 上午9:36
下一篇 2022年6月19日 上午9:46


相关推荐

  • Hadoop生态系统全面介绍

    Hadoop生态系统全面介绍Hadoop 作为大数据的分布式计算框架 发展到今天已经建立起了很完善的生态 本文将一一介绍基于 Hadoop 生态的一系列框架和组件 Flume 简介 Flume 是一个分布式 高可用的服务 用于高效收集 聚合和移动大量日志数据 作用 Flume 主要承载的作用是收集各个数据源的事件或日志数据 然后将其 Sink 到数据库架构 Flume 的实现架构原理也非常简单 通过 Agent 代理来实现数据的收集 一个 Agent 包含了 Source channel Sink 三个组件 Source 采集的数据来源

    2025年8月22日
    5
  • pycharm最新激活码[最新免费获取]

    (pycharm最新激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32PGH0SQB-eyJsaWNlb…

    2022年3月26日
    53
  • vue 最简易的邮箱正则表达式[通俗易懂]

    vue 最简易的邮箱正则表达式[通俗易懂]直接使用的正则表达式

    2025年12月2日
    7
  • 如何使用adb命令安装apk到电视上[通俗易懂]

    如何使用adb命令安装apk到电视上[通俗易懂]使用此命令之前,先确定你的电视已打开adb调试服务如何打开请参考:TCLMS平台电视如何实现adb连接从而安装第三方应用程序需要用到的软件Windows下,选择”开始”-&amp;gt;运行-&amp;gt;cmd,进入命令行模式;进入adb的目录,如adb在D盘adbtools文件夹中,则:d:cdadbtools如果嫌麻烦,可以在adb目录中右击|在此处直接打开命令窗口输…

    2022年5月15日
    181
  • java 进度条时间设置_java进度条时间显示怎么实现?

    java 进度条时间设置_java进度条时间显示怎么实现?我们在一些网站中经常能够看到进度条 这是提示我们当前加载到什么时候了 本篇文章我们就来看看用 java 如何写出这么一个时间进度条 示例 packagecom original client widget execcenter importjava awt BorderLayout importjava awt Color importjava awt Container importjav

    2026年3月18日
    2
  • 腾讯在AI赛道落后了吗?

    腾讯在AI赛道落后了吗?

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号