Maven依赖分析和传递依赖无法引入问题

<packaging>pom</packaging>

 定义maven项目的打包方式,一般有三种,分别是jarwarpom。打包方式一般对应于打包后文件的扩展名。如果不指定,默认为jar

<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.6.0</version>
     <scope>compile</scope>
     <optional>true</optional>
 </dependency>

在父pom中定义
<dependencyManagement>
	     <dependencies>
	         <!-- Override Spring Data release train provided by Spring Boot -->
	         <dependency>
	             <groupId>org.springframework.data</groupId>
	             <artifactId>spring-data-releasetrain</artifactId>
	             <version>Fowler-SR2</version>
	             <type>pom</type>
	             <scope>import</scope>
	        </dependency>
	        <dependency>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-dependencies</artifactId>
	            <version>2.0.1.BUILD-SNAPSHOT</version>
	            <type>pom</type>
	            <scope>import</scope>
	        </dependency>
	    </dependencies>
</dependencyManagement>

groupId:定义当前项目隶属的实际项目。groupId的定义类似于包名的定义,一般是到域名的方式后面跟实际项目名。倒域名可以指定项目的所属组织或公司,实际项目名则指定项目的真实名称。
artifactId:定义实际项目中的一个Maven模块,一般命名方式为实际项目名作为前缀,后面是模块名
version:定当前maven项目所处的版本
type:依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,默认值为jar。
scope:依赖的范围。默认 <scope>compile</scope>

名称说明
compile默认值,编译、测试、运行都有效
test测试有效
provided编译、测试有效,运行无效。典型的例子是 servlet-api, 编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引人一遍。既然运行时容器会提供,所以 scope 为 provided 的依赖不会参与项目的打包
runtime编译无效、测试和运行有效。型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动
system编译、测试有效,运行无效。使用system范围的依赖时,必须通过systemPath元素显式的指定依赖文件的路径,<systemPath>${basedir}/lib/xxxxx.jar</systemPath>。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用
import特殊,导入依赖范围,只能在pom文件的<dependencyManagement>中使用

optional:标记依赖是否可选。如果设为true,那么在A依赖B,B依赖于X和Y,且X和Y都可选时,此时,默认情况下,A是不依赖于X和Y的,如果A需要依赖X,那么需要在A中显式的声明X。
exclusions:用来排除传递性依赖。

分析依赖:

应用根目录打印依赖树:

mvn dependency:tree>tree.txt

会在根目录生成tree.txt文件,从文件中查找对应的wanring

[WARNING] The POM for com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2.2.3.RELEASE is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.3.RELEASE
[FATAL] Non-parseable POM D:\DevelopSoftWare\repository\org\springframework\cloud\spring-cloud-build\2.3.1.RELEASE\spring-cloud-build-2.3.1.RELEASE.pom: unexpected markup <!d (position: START_DOCUMENT seen \n<!d... @2:4)  @ D:\DevelopSoftWare\repository\org\springframework\cloud\spring-cloud-build\2.3.1.RELEASE\spring-cloud-build-2.3.1.RELEASE.pom, line 2, column 4

根据提示把对应的repository文件spring-cloud-build删除,然后重新load。

也可以使用命令:

mvn -X -U clean package

再次查看编译日志,根据对应的日志信息,重新编译依赖

依赖列表

mvn dependency:list

依赖分析

mvn dependency:analyze

总结:上面这几条命令基本不会使用,开发过程中都是使用IDE自带的工具或插件

 插件 Maven Helper插件

 打开pom.xml后,就会多出Dependency Analyzer选项了

 当切换到“Dependency Analyzer”视图后,可以发现如下界面

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值