Maven多模块项目打包前的一些注意事项(打包失败)
一、
最近在打包Maven项目时遇到了点问题,这个项目是Maven多模块项目,结构如下:
projectParent
├── xxxx-basic
├── xxxx-web1
├── xxxx-collector
└── xxxx-web2
projectParent 为父项目,无任何代码,就是个空壳,<packaging>pom</packaging>;
xxxx-basic 为基础项目,它依赖于projectParent,里面含有一些model、dao、xml等,下面三个项目都依赖它,<packaging>jar</packaging>;
xxxx-web1 为web项目,它依赖于xxxx-basic,<packaging>war</packaging>;
xxxx-collector 为springboot项目,它依赖于xxxx-basic,可单独启动,不用管它。
xxxx-web2 为web项目,它依赖于xxxx-basic,<packaging>war</packaging>;
二、
现在要发布xxxx-web2到服务器,打包xxxx-web2时,报以下错误:

[WARNING] The POM for com.zc:xxxx-basic:jar:0.0.-SNAPSHOT is missing, no dependency information available
[ERROR] Failed to execute goal on project xxxx-web2: Could not resolve dependencies for project com.zc:xxxx-web2:war:0.0.-SNAPSHOT: Could not find artifact com.zc:xxxx-basic:jar:0.0.-SNAPSHOT in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]
从打印出来的日志可以看出,无法找到 com.zc:xxxx-basic:jar:0.0.1-SNAPSHOT 在nexus-aliyun(阿里云私服)
xxxx-basic明明是本地项目,为什么会去nexus-aliyun下载呢?
这里解释一下,Maven在下载依赖时会先在本地仓库查找,如若未找到,则会去内网私服查找,如若仍未找到,再去远程仓库查找。
去本地仓库看了一下,很明了,本地仓库没有xxxx-basic:jar:0.0.1-SNAPSHOT,内网私服也没搭建,所以它直接去远程仓库找了(我们的远程仓库配置的阿里云私服),直到最后未找到,报错。
三、
先去发布(install)xxxx-basic模块到本地仓库,再打包xxxx-web2

发布(install) xxxx-basic模块到本地仓库 成功(如上图)。

而打包 xxxx-web2 时又失败(如上图)。
[ERROR] Failed to execute goal on project xxxx-web2: Could not resolve dependencies for project com.zc:xxxx-web2:war:0.0.-SNAPSHOT: Failed to collect dependencies at com.zc:xxxx-basic:jar:0.0.-SNAPSHOT: Failed to read artifact descriptor for com.zc:xxxx-basic:jar:0.0.-SNAPSHOT: Could not find artifact com.zc:projectParent:pom:0.0.-SNAPSHOT in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]
只看最后一句,无法找到 com.zc:projectParent:pom:0.0.1-SNAPSHOT在nexus-aliyun(阿里云私服)
很显然,和上一个错误一样。xxxx-web2 依赖 xxxx-basic,而 xxxx-basic 依赖于projectParent,projectParent的pom在本地仓库没有,所以Maven又去远程仓库查找,未找到,报错。
这样再把父项目的pom发布(install)到本地仓库就可以了。在这里需要注意的是,当 install 整个父项目时,它下面的 所有子模块项目 也会一同发布到本地仓库。比较费时,有些模块又不需要,放在本地仓库还占空间。
针对这种父项目 install 时,两种解决方法:
1、直接install父项目,等待一会,全部发布成功后,在本地仓库中查找到其余不用的模块,直接删除,不再占用磁盘空间。
2、在不需要发布到本地仓库的 '子模块项目' 的pom.xml内加入
<properties>
<maven.install.skip>true</maven.install.skip>
</properties>详情可查看官网介绍(http://maven.apache.org/plugins/maven-install-plugin/install-mojo.html)
四、
发布 (install) projectParent 父项目到本地仓库,跳过其余四个子模块项目,成功。

projectParent模块、xxxx-basic模块在本地仓库都有了,之后再去打包 xxxx-web2 就成功了。
(父模块基本不会改,一般不需要重新发布;xxxx-basic在某些需求下,会改动,改动就重新发布,未改动无需重新发布;)


Maven多模块项目打包前的一些注意事项(打包失败)的更多相关文章
- SpringBoot+Maven 多模块项目的构建、运行、打包实战
前言 最近在做一个很复杂的会员综合线下线上商城大型项目,单模块项目无法满足多人开发和架构,很多模块都是重复的就想到了把模块提出来,做成公共模块,基于maven的多模块项目,也好分工开发,也便于后期微服 ...
- SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
一,创建Maven多模块项目先建立外层父工程 File →new →project 选择Spring Initializr Next下一步到以下页面 工程结构如下 ...
- SpringBoot+Maven 多模块项目的构建、运行、打包
SpringBoot+Maven 多模块项目的构建.运行.打包 https://blog.csdn.net/zekeTao/article/details/79413919
- maven多模块项目构建
描述 一个大的企业级项目通常跨越了数十万行代码,牵涉了数十或数百软件人员的努力.如果开发者在同一个项目下开 发,那么项目的管理.构建将会变得很难控制.因此设计人员会将项目划分为多个模块,多个模块独 ...
- Spring Boot 项目实战(一)Maven 多模块项目搭建
一.前言 最近公司项目准备开始重构,框架选定为 Spring Boot ,本篇主要记录了在 IDEA 中搭建 Spring Boot Maven 多模块项目的过程. 二.软件及硬件环境 macOS S ...
- maven多模块项目找不到Class错误
接手了一个maven管理的多模块项目,又是javaconfig,又是spring data jpa,还算是比较新比较正规的模块化结构吧..然后我往其中的一个模块中新添加了一个jpa的entity,然后 ...
- springboot创建maven多模块项目
SpringBoot创建maven多模块项目 项目结构 该项目名称为springboot-maven-multi,由springboot-maven-multi.user-dao.user-domai ...
- maven多模块项目,多web合并项目使用心得
Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow 此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过 ...
- 在IntelliJ IDEA中创建Maven多模块项目
在IntelliJ IDEA中创建Maven多模块项目 1,创建多模块项目选择File>New>Project 出现New Project窗口左侧导航选择Maven,勾选右侧的Create ...
随机推荐
- flask 高级编程 上下文与栈(转)
转: https://www.cnblogs.com/wangmingtao/p/9372611.html 22.上下文与出入栈 22.1 请求过程 请求过来,flask会实例化一个Request C ...
- c++学习书籍推荐《Exceptional C++ Style》下载
百度云及其他网盘下载地址:点我 编辑推荐 软件“风格”所要讨论的主题是如何在开销与功能之间.优雅与可维护性之间.灵活.性与过分灵活之间寻找完美的平街点.在本书中,著名的C++大师Herb Sutter ...
- Python中字符串常见操作
(1)find 查找 格式:mystr.find(str, start, end) 例如: mystr.find(str, start=0, end=len(mystr)) 作用:检测str是否包含在 ...
- maven多仓库配置(公司服务器与阿里云仓库)
1. 问题描述 公司内网搭建的有maven私有服务器,但是碰到好几次只有gav没有jar的情况或者最新版本更新不及时,所以需要公司服务器和远程仓库(阿里云)相结合来满足项目需求. 2. 解决方案: m ...
- 【题解】长度为素数的路径个数-C++
Description 对于正整数n (3≤n<20),可以画出n阶的回形矩阵.下面画出的分别是3阶的,4阶的和7阶的回形矩阵: 对于n阶回形矩阵,从左上角出发,每步可以向右或向下走一格,走2* ...
- 【最小生成树之Prim算法】-C++
[最小生成树之Kruskal算法] 没有看过的可以先看↑,会更简单. [模板]最小生成树 这一篇博客主要是介绍另外一种算法:Prim算法. prim算法就好像是一棵"生成树"在慢慢 ...
- 【动态规划DP】传娃娃-C++
传娃娃 描述 学习空闲之余,小信经常带着同学们做游戏,最近小信发明了一个好玩的新游戏:n 位同学围成一个圈,同学 A 手里拿着一个布娃娃.小信喊游戏开始,每位手里拿着娃娃的同学可以选择将娃娃传给左边或 ...
- Ajax提交打开新窗口,浏览器拦截处理;以及跨域问题
//主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderI ...
- 如何在windows上玩转redis的最新特性?
想要了解redis的最新特性,可是windows下的可以安装的版本最高为3.2,想要验证redis的诸如stream特性的话,就无能为力了. 解决方法之一在windows上安装虚拟机,然后再虚拟机上安 ...
- C/C++指针函数和函数指针
一.指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 格式: 类型说明符 * 函数名(参数) 当然了,由于返回的是一个地址,所以类型说明 ...
