当前位置: 首页 > news >正文

Maven集成模块打包使用

文章目录

    • 1.问题思考(如何对集成模块进行打包)
    • 2.问题解决 (如何对集成模块进行打包)
    • 3.使用者使用该jar包(jar包安装本地仓库和使用)

1.问题思考(如何对集成模块进行打包)

思考:假设有这么一个场景,你需要制作一个Springboot的集成模块 给其他人使用,该集成模块依赖了你公司的多个内部的模块,并且该集成模块是没有主启动类之类的。当你把集成模块开发完毕之后,如何提供给在其他外部环境使用?

  如果你没有做其他任何打包配置,直接对集成模块进行maven install,你会发现你打出来的jar包很小,例如只有十几KB,此显然是有问题的,该jar包集成模块所依赖的外部模块、内部模块 都没有集成进jar包里面,所以会导致jar包很小。
  此时如果将该jar包安装到本地仓库并进行使用,会发现在使用的过程中,该集成模块缺少其所需依赖的内部模块,而这些内部模块是使用者所不曾拥有的。

使用spring-boot-maven-plugin 来实现依赖集成打包,行不行?
:不行的,因为使用spring-boot-maven-plugin插件进行打包,会要求该模块必须要有一个主启动类,否则会打包失败。我们的集成模块是没有主启动类的,故而使用该方式会打包失败!

 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.1.3</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

2.问题解决 (如何对集成模块进行打包)

在需要打包的集成模块的pom.xml里面进行如下配置:

<!--  将本模块所需依赖到打进本jar包(此方式无需主启动类)   -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.4.1</version> <!-- 使用最新版本 --><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><!-- 防止某些文件被重复打包,比如 META-INF 下的文件 --><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass><!-- 这里通常不需要指定,因为没有主启动类 --></mainClass></transformer><!-- 如果需要合并某些文件,比如 Spring 的配置文件,可以使用 AppendingTransformer 等 --></transformers></configuration></execution></executions>
</plugin>

然后进行maven install打包,会发现没用Main主入口也能打包成功,并且打出来的jar包也是包含了所需的相关依赖,这里是20MB.
在这里插入图片描述

3.使用者使用该jar包(jar包安装本地仓库和使用)

你只需将上面打好的jar包发给其他人,其他人只需将jar包安装到本地仓库,然后在自身项目的pom.xml进行引用即可。

jar包安装到本地仓库的命令:

mvn install:install-file -Dfile=D:\aaa-1.0.0-SNAPSHOT.jar -DgroupId=com.bbb -DartifactId=aaa -Dversion=ccc-SNAPSHOT -Dpackaging=jar

上面参数说明:
-Dfile=D:\aaa-1.0.0-SNAPSHOT.jar:为jar包所在的磁盘完整路径。
-DgroupId=com.bbb:为jar包所在的组织。
-DartifactId=aaa:当前依赖的名称
-Dversion=ccc-SNAPSHOT:当前依赖的版本

这里的-DgroupId、-DartifactId、-Dversion的值可以随便填,只需要和使用者pom.xml对应的依赖配置能一致即可。
使用者将jar包安装到本地仓库之后,在自身项目的pom.xml里面进行使用。

 <dependency><groupId>com.bbb</groupId><artifactId>aaa</artifactId><version>ccc-SNAPSHOT</version>
</dependency>

相关文章:

  • 基于javaweb的SSM+Maven教材管理系统设计与实现(源码+文档+部署讲解)
  • 详解BUG(又名:BUG的生命周期)
  • 【Spring Boot基础】MyBatis的基础操作:增删查改、列名和属性名匹配 -- XML实现
  • 【Git】branch合并分支
  • Cocos学习之核心功能(六)
  • 本地部署DeepSeek-R1模型接入PyCharm
  • 人工智能在PET-CT中的应用方向探析
  • 新零售行业时代:如何用科技驱动传统零售的转型升级​​
  • 【Java面试笔记:基础】7.int和Integer有什么区别?
  • Linux 内核中 cgroup(控制组) 作用是什么?
  • 数据赋能(204)——原则与原理——原理方法
  • 【程序员 NLP 入门】词嵌入 - 上下文中的窗口大小是什么意思? (★小白必会版★)
  • 电容加速电路!
  • 从零开始搭建Django博客②--Django的服务器内容搭建
  • 【2025最新面试Java八股】Java虚拟线程怎么回事,是协程吗?
  • 数智读书笔记系列030《曲折的职业道路:在终身工作时代找准定位》与《做自己的教练:战胜工作挑战掌控职业生涯》
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.25)
  • Java高频面试之并发编程-05
  • LDO手册看点
  • 交易所开发:构建高效数字交易枢纽
  • 印尼塔劳群岛发生6.2级地震,震源深度140千米
  • 国家疾控局局长沈洪兵:将逐步缩小国内免疫规划与国际差距
  • 九江市人大常委会原党组成员、副主任戴晓慧主动交代问题,正接受审查调查
  • “中国共产党的故事——习近平新时代中国特色社会主义思想在重庆的实践”重庆经贸推介会成功举办
  • 大尺度色情语聊、撮合卖淫嫖娼!一些交友软件暗藏“桃色陷阱”
  • 多元布局、抱团取暖……上海虹口区召开外向型企业圆桌会议