推广 热搜: page  关键词  红书  链接  搜索  获取  哪些  数据  数据分析  服务 

maven插件使用及dockerfile插件多模块下打包

   日期:2024-12-26     作者:326hj    caijiyuan   评论:0    移动:https://sicmodule.kub2b.com/mobile/news/10476.html
核心提示:我们知道maven除了原生支持命令如cleancompilebuildpackageinstall等,这些是maven原生为我们项目提供任务执行功能,

我们知道maven除了原生支持命令如cleancompilebuildpackageinstall等,这些是maven原生为我们项目提供任务执行功能,比如清除、编译、创建、打包、打包进本地仓库,我们此外我们还可以定制自己的插件来实现功能,比如哪些文件不打包进去,我们这里以dockefile插件为例,了解个各配置及执行流程

maven插件使用及dockerfile插件多模块下打包

dockerfile-maven-plugin

dockerfile是spotify提供的一个将项目打成的包打成docker镜像的工具,基于此前它发布的docker-maven-plugin升级而来。通常我们引用该插件如下

 

我们的项目是基于tomcat打包的docker文件如下

 

通常单模块项目我们执行mvn clean package dockerfile:bulid即使创建镜像,docker:tag给镜像打tag,dockerfile:push将镜像推送到仓库,然后服务器端执行pull然后执行就行了

如果我们此时有四个模块,demo-web,demo-service,demo-dao,demo-common
此时如果将dockerfile放项目及父模块下,执行mvn docker:bulid会发现,子模下没有dockerfile文件,查看依赖关系依赖关系是web->service->dao->common,发现只需要将web模块打包成镜像,此时咋办,如果dockerfile插件依赖和文件进web下,此时需要提前将其他模块install进本地仓库然后web下执行dockerfile:bulid,不能web打包和其他模块打包一起执行命令,也就说我们需要插件执行某个或者些子模块打包镜像操作。此时就要在引出maven-plugin的phase绑定,何为phase,首先看下我们更改的pom依赖配置

 

看了我们配置,发现puglins外面增加了pluginManagement,我们知道两者的区别是,前者是所有子模块都依赖该插件;后者是声明一个插件依赖并且带版本号,类似dependencyManagement作用。我们看到phase绑定一个maven的deploy操作,然后下面是该插件自己的命令,即我们执行deploy时会自动执行bulid、tag、push这些dockerfile插件自带的操作,而且该操作只对依赖了该插件的子模块起作用
但是但是如果我们package、或者deploy时不想执行打包dockerfile咋办

dockerfile.skip

此时我们不能绑定,还需要执行dockerfile:bulid命令,依旧会发现父模块没有dockerfile,然后我们此时需要跳过插件操作,单独于pluginManagement外加如下

 

此时发现可以跳过了,但是所有子模块跳过了,因此我们改成如下

 

每个模块不继承此插件依赖,但是这样我们需要一一在不需要打包的模块下加此配置,依旧繁琐;我们知道maven跳过测试执行-Dmaven.test.skip=true 或者-DskipTests,于是发现还有dockerfile.skip=true操作,但是依旧时父模块下执行,全局跳过,于是有了如下操作

 

默认全局跳过,然后需要dockerfile打包镜像的模块加上相反配置,覆盖全局默认跳过即可

本文地址:https://sicmodule.kub2b.com/news/10476.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号