配置文件中的依赖包,如何查询:
1 通过坐标来进行查询--GAV
2 有一些转门的网站,可以给我们坐标,比如
http://mvnrepository.com/artifact/org.nuxeo.common/nuxeo-common/
3 可以通过dependency可以设置依赖,假如第一个类需要引用第二个类,需要将第一个类打包,然后在pom文件中加上第一个类所在的目录 得到传递性依赖
依赖包的传递性
依赖是会被传递的。
但是,假如没有写scope 默认就是compile 范围也就是编译范围,但是下面的scope为test,是不会导入junit包 。也就是这个依赖的scope是test,那么这个包是不会传递到一个compile的中的。对于依赖的传递而言,主要是针对compile作用域来传递的 ,而不是test。
scope的作用域有很多 其中包括
test 打成jar 或者是war不会打进去,仅仅在测试范围内有效
compile 范围指的是编译范围有效,在编译和打包的时候都会将依赖存储进去
provided 在编译和测试的过程有效, 在最后生成war包是不会加入的 诸如:servlet-api 因为tomcat的web服务器已经存在了 假如再次打包的时候回出现重复的
runtime 在运行的时候依赖, 在编译的时候不依赖
默认的依赖范围就是compile
依赖的问题:
假如A-->B1.1 版本 C--->B1.0 那么 d-->A和C 那么d依赖于A的版本还是c得版本的?答案是 那个先写先依赖那个
如果依赖的长度不一,那就依赖最短的路径
如何改变默认的依赖规则:
配置文件中 <exclusions></
exclusions
> 排除的因素
比如:java文件dao依赖于log 和core,但是log和core 里面都有log4j.jar。需要在不依赖的那个包中添加如下的配置文件解决:
<dependency>
<groupId>org.konghao.user</groupId>
<artifactId>user-log</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.konghao.user</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>