Maven传递依赖无法引入解决办法

Stella981
• 阅读 1019

今天一个传递依赖问题搞了我半天,终于搞明白原因了。一个jar包A依赖了httpclient,然后另一个jar包B引入A,在IDEA里面只能看到依赖A,不管咋样都看不到依赖httpclient。

我在IDEA的项目B里面,打包后在控制台发现一个告警:

the POM for A is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

原来是jar包A的pom依赖有问题。

问题排查

在应用B的根目录打印依赖树:

mvn dependency:tree>tree.txt

应用依赖树中出现如下警告。警告显示:应用引入的依赖包无效,依赖包中传递依赖项不可用,可以通过开启debug获取更多信息。

[WARNING] the POM for A is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details... 

然后我开启debug功能,重新打印依赖树:

mvn -X dependency:tree>tree.txt

开启maven debug功能后,警告后紧跟了一条错误信息,如下。

[WARNING] The POM for com.huawei.dc.security:security-sdk-https:jar:1.0-SNAPSHOT is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for com.huawei.dc.security:security-sdk-https:1.0-SNAPSHOT
[ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-configuration-processor:jar is missing. @ 
[ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-autoconfigure:jar is missing. @ 
...

原来是A包中引入的另外的spring-boot-autoconfigure没加版本号,这个我以为能继承父pom的版本号,发现这里不生效。具体原因我再分析。

解决方案

在A中把版本号补上重新发布,则一切正常。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springboot使用之快捷打包部署
本篇关键知识点:Maven的assembly插件实现自定义打包部署(包含依赖jar包) 目前springboot项目的几种常见的部署方式。1\.使用docker容器去部署,将springboot的应用构建成一个dockerimage,然后通过容器去启动镜像,这种方式在
kenx kenx
3年前
Maven 基础标签之版本管理和冲突解决
前言我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线maven基础Maven是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理每个maven项目根目录都会有一个pom.xml文件,负责项目构建,依赖管理在这个文件里面,你只需要添加相应的jar包坐标配置,maven就会自动
Easter79 Easter79
3年前
thymeleaf在工作中常用的属性及表达式使用详解(二)
1.1 在SpringBoot中引入Thymeleaf第一步:在Maven中引入thymeleaf的依赖,加入以下代码即可引入需要的Jar包。<dependency<groupIdorg.springframework.boot</groupId
Stella981 Stella981
3年前
Maven项目使用打包时使用本地jar包库
在使用maven管理项目时,有时候我们可能会使用一些第三方的jar包依赖库,但是这些jar包依赖库又没有在共有的maven仓库。通常只能下来放到本项目的lib目录下。但是我们打包时如果不做处理,那么打包后的fatjar中不会有lib文件夹中的相关jar包。打包后无法运行起来,因此需要做特殊处理,让maven打包时能够把使用到外部jar打进去。主要就是在
Stella981 Stella981
3年前
IDEA打开Maven项目找不到jar问题
这应该是IDEA的bug导致的,我发现不管是Eclipse建的项目,还是IDEA建的项目,都有可能出现本地Maven仓库有jar包,但是项目报错找不到jar包。今天找到解决方案了,记录一下:我发现同一个项目,通过git或者svn,clone相同的分支和版本,在某些电脑上正常,某些电脑上报错。实际上是IDEA在打开项目的时候会在根目录下生成一个以项
Stella981 Stella981
3年前
Maven命令将本地jar打包到maven仓库
一、背景日常开发中,常见的一种情况是在java项目的pom.xml文件中引入依赖版本信息,由于maven中央仓库没有这个jar,我们可以从其他地方下载下来,然后再使用打包方式将下载下来的jar包打包到maven仓库。二、示例1\.依赖ojabc6引入!在这里插入图片描述(https:/
Wesley13 Wesley13
3年前
Unable to instantiate activity ComponentInfo
不知道怎么回事,在libs中添加了jar包后,无法给jar包附加上源码,于是采取以下措施:删除自动生成的依赖:在AndroidDependences目录上右击BuildPathRemovefromBuildPath然后往libs中拖入jar包,然后添加jar的引用,这样,就可以给jar包附上源码了。但是运行程序的时候
Stella981 Stella981
3年前
Idea下maven的配置和使用
  maven的主要功能就是依赖管理,jar包仓库。和C中的NuGet仓库差不多。另外也提供打包构建,启动插件等功能。下面主要讲一下,在使用Idea开发时,maven的配置和使用。maven的安装和配置  maven(3.6.1)的下载地址:https://idlestudio.ctfile.com/fs/14960372382
Maven进阶学习指南 | 京东云技术团队
当我们在开发项目时,有时需要用到外部依赖组件,例如当我们需要Json序列化的时候需要用到FastJson组件,我们可以通过下载对应jar包加载到项目中。但当一个大的项目同时需要依赖各种各样的外部服务,就存在着配置繁琐、依赖冲突等问题,因此可以通过maven来完成对应的依赖管理功能。
死牛胖子 死牛胖子
3个月前
Maven如何解决版本依赖冲突
Maven的依赖具备传递性,一个项目会依赖很多包,这些依赖包又会依赖其它包,从而构成复杂的依赖关系,这其中相同的包可能会被多次依赖,如果依赖了多个版本,就会产生冲突,此时,Maven需要一个选择策略,从多个版本中选择一个版本。Maven会根据以下两个原则来