Maven插件之assembly
这篇文章没有什么价值,操作起来一点都不流畅,不建议参考。
我先说一下我的整个的工程的架构,我使用了若依的开发框架,父工程包括了ruoyi-auth、ruoyi-common、ruoyi-gateway、ruoyi-modules等模块,在ruoyi-modules模块下,又包含了子模块:ruoyi-file、ruoyi-gen、ruoyi-system等模块,以及我新建的ph-job模块。在ph-job模块中,我引入了ruoyi-common模块下的ruoyi-common-core模块,同时因为ph-job模块包括了不同的开发环境,需要为每一个开发环境进行打包部署。这个时候,如果我从工程的根目录下直接进行打包,可以打包,但是我就没有办法指定ph-job的打包环境了,如果我直接在ph-job模块下进行打包,mvn clean pacage,就会出现ruoyi-common-core不满足的问题,无法进行打包。这里我可能遇到了一个误区,就是到底能不能用assembly对不同的微服务进行打包呢?我看到的很多的文章,其实是把多个相互依赖的模块打包成一个工程,只有一个启动类的情况下,但是我的微服务是多个启动类啊。
【解决】
为了解决上面提到的问题,需要如下操作:
1 | ## 1.在工程根目录下执行安装命令,将全部的模块安装到本地仓库中 |
只需要先把依赖安装到本地,然后再在子模块中进行打包就可以了,这样就不会找不到模块了,我折腾了很久,还用了assembly,发现根本用不上,所以文章的下面很长的一段都没有用了,不做参考也罢。
1.maven的install的作用
2.maven父子项目使用assembly插件打包 注意如果前面有依赖包是本地jar包,这里打包时就遇到问题了,本地jar包scope是system,但assembly打包默认是把scope为runtime的jar包打进zip中,所以不能将本地jar包压进zip,网上给的建议都是把本地的jar包安装到本地maven库,最终我也妥协了。
3.SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程 这里有父子工程关系和测试代码
4.Maven:两个命令clean 和 install clean :清除由项目编译创建的target,install:安装jar包到本地仓库。
5.mvn install之后如何从本地maven仓库中删除jar文件 mvn dependency:purge-local-repository -DmanualInclude=”groupId:artifactId, …”
6.Maven安装/卸载本地jar 使用上面的命令后,再阻止Maven对已删除的jar进行reResolve,mvn dependency:purge-local-repository -DreResolve=false
前言
自定义打包方式,这里主要介绍的是多模块的方式,使用的工程就是 若依项目,一个后台管理系统的开发脚手架,可以下下来进行参考。
1.使用Maven assembly打多个自定义包及War包简介
2.maven 根据环境打包不同配置文件
3.利用assembly插件分环境打包配置文件
4.使用Maven的assembly插件实现自定义打包
5.springboot maven多环境打包配置
6.maven-assembly-plugin 打包的配置 1.maven-jar-plugin:maven 默认打包插件,用来创建 project jar。2.maven-shade-plugin:用来打可执行包,executable(fat) jar。3.maven-assembly-plugin:支持定制化打包方式,例如 apache 项目的打包方式。
1.新建assembly模块
在项目中,新建assembly模块,这个模块主要用来进行打包,不包括任何的代码。在父pom.xml中,assembly模块放在所有模块的最后面。
1 | <modules> |
1.Maven打包方式(多模块) 这里虽然也是一个多模块的,即便是照着做,都不一定能成功,就是有些说不明白的地方,不知道为什么,比如编写完配置之后,如何进行打包,是不是和 mvn package 有什么区别?
2.还在打jar包?maven-assembly了解一下?
3.使用maven-assembly-plugin打包多模块项目 这篇文章也是,写了一半,
2.添加assembly依赖
修改父pom.xml的build.pluginManagement节点,添加plugins支持,我这里定义了 maven-assembly-plugin.version 版本为 3.4.1。
1 | <plugin> |
3.编写assembly模块文件目录
在assembly模块下,根据需要新建 bin、config、docs、lib、logs 等目录。
4.修改 assembly 模块的 pom.xml 文件
修改 assembly 模块的 pom.xml 文件
1 |
|
4.编写assembly.xml文件
编写 assembly 模块下的 assembly.xml
1 | <assembly> |
1.maven-assembly-plugin 插件多模块打包实例 这里虽然强调了打包成功了,但是我还是有些疑问的,为什么要新建一个模块呢?
5.执行打包
编辑完成相关配置之后,执行打包命令:
1 | mvn package assembly:single |
1.Maven打包三种方法和常用命令大全 这里写了两种执行打包命令的配置方式,一种是直接使用: mvn package,一种是 携带了 mvn package assembly。适合单模块的形式。
2.maven assembly plugin使用
问题
(1) on project ruoyi: Error reading assemblies: No assembly descriptors found.
这是我遇到的第一个问题,提示找不到assembly描述,这个需要在父模块的pom.xml文件中添加assembly.xml中的build节点的resource配置。
1 | <plugins> |
这一点让我有些疑惑了,已经新建了一个模块叫assembly模块,也在里面写了pom.xml,那么在父模块的pom.xml也还要配置一遍 maven-assembly-plugin 这个插件的意义是什么呢?那么干脆直接在父模块中配置就好了,干嘛还要新建一个子模块叫 assembly 呢?
1.mvn assembly:single打包报错:Error reading assemblies: No assembly descriptors found. 我明明在模块的pom.xml中配置了configuration,结果还是找不到这个文件
(2) com.ruoyi:ruoyi-gateway:jar:3.5.0 (included by module) does not have an artifact with a file. Please ensure the package phase is run before the assembly is generated.
这个问题就是我配置了 moduleSets 之后出现的问题,我本意是想着能把依赖进行打包,看来似乎不是这么用的。
1.Maven Assembly plugin -Multi module project- source and javadoc not getting added to zip file
2.Maven assembly plugin complains about no files whatever I do
3.Maven Assembly 配置详细解释
(3) No plugin found for prefix ‘assemble’ in the current project and in the plugin groups
这个问题,主要是我在某一个模块中,单独进行了 assembly 配置,然后执行打包的时候,出现的问题。
【解决】
这个问题似乎是因为我写错了执行命令
1 | # 错误 |
1.[maven出现No plugin found for prefix ‘help’ in the current project and in the plugin groups org.ap… 增加了镜像
(4)
1.2021-01-21 maven依赖的项目报错Could not resolve dependencies for project 执行install,将上一步执行成功的jar文件安装到responsitory
6.其他配置
1.maven-assembly-plugin 打包的配置
2.Maven 单独构建多模块项目中的子模块 如果需要部署某个子模块 , 单独构建则会报错 , 如果构建整个项目 , 又会非常耗时
3.Maven单独构建多模块项目中的单个模块