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 ...
随机推荐
- iOS组件化开发一本地环境配置(一)
首先我们要使用pod支持组件化开发 解决CocoaPods慢的方案(gem和pod repo换源) gem换源 $ gem sources --remove https://rubygems.org/ ...
- git中常用的操作命令有哪些?常用操作命令归纳
git中常用的操作命令有哪些?本篇文章就给到大家归纳了一些git中常用操作命令.有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. git开始 全局配置:配置用户名和e-mail地址 1 ...
- js 为何范围内随机取整要用floor,而不是ceil或者round呢
壹 ❀ 引 我在如何使用js取任意范围内随机整数这篇博客中,列举并分析了取[n,m)与[n,m]范围内整数的通用方法,并在文章结果留了一个疑问:为什么通用方法中取整操作,我们使用Math.floor ...
- C++学习书籍推荐《C++标准库(第一版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++标准程序库:自修教程与参考手册>编辑推荐:C++标准程序库提供了一组通用类别(classes)和界面(interfaes),可大幅扩充C+ ...
- C语言学习书籍推荐《嗨翻C语言(英文)Head First C》下载
David Griffiths (作者), Dawn Griffiths (作者) Ever wished you could learn C from a book? Head First C pr ...
- 影音播放器 Daum Potplayer v1.7.14804 美化便携版
PotPlayer 是一款由世界老牌的著名多媒体影音播放器软件 KMPlayer 的原创作者姜龙喜先生进入韩国多音软件公司后开发的新一代多媒体播放器作品.前者的优势在于内置了功能强大的视频及音频解码器 ...
- Ubuntu系统 apt-get update失败解决办法
使用apt-get的时候发现ubuntu和阿里云均已经不提供该版本的源,所以需要找到其他的替代源. 使用的ubuntu版本是14.10,属于非LTS(长期支持版本),因此前一段时间还可以使用apt-g ...
- PostgreSQL 窗口函数 ( Window Functions ) 如何使用?
一.为什么要有窗口函数 我们直接用例子来说明,这里有一张学生考试成绩表testScore: 现在有个需求,需要查询的时候多出一列subject_avg_score,为此科目所有人的平均成绩,好跟每个人 ...
- kafka介绍及安装配置(windows)
Kafka介绍 Kafka是分布式的发布—订阅消息系统.它最初由LinkedIn(领英)公司发布,使用Scala和Java语言编写,与2010年12月份开源,成为Apache的顶级项目.Kafka是一 ...
- excel报表开发-- 根据datatable个数自动生成新sheet
总结一下很久之前做的报表小程序,今日有问题又调试了一下. DB中存在一个表,记录了ID<自增长>,SqlStatement<sql查询语句>及其他必要字段,比如SheetNam ...
