依赖指运行当前项目所需的jar,一个项目可以设置多个依赖。
- <dependencies>
-
- <dependency>
-
- <groupId>junitgroupId>
-
- <artifactId>junitartifactId>
-
- <version>4.9version>
-
- <scope>testscope>
- dependency>
- dependencies>
This means that if A depends on B and B depends on C, then A depends on both B and C.
直接依赖:在当前项目中通过依赖配置建立的依赖。
间接依赖:如果“直接依赖”依赖其他资源,那么当前项目间接依赖其他资源。
假如依赖们在不同层,路径优先:选层浅的。
假如依赖们在同一层,声明优先:前面的配置覆盖后面的配置。
假如依赖们都是直接依赖,后面的配置覆盖前面的配置。
可选依赖在直接项目之外是隐藏的-----不透明
假如java-project这个项目配置可选依赖如下:
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <optional>trueoptional>
- dependency>
java01这个项目依赖上面这个项目:
- <dependency>
- <groupId>org.examplegroupId>
- <artifactId>java-projectartifactId>
- <version>1.0-SNAPSHOTversion>
- dependency>
那么java01就看不到junit 4.12这个依赖:
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本------不需要
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <exclusions>
- <exclusion>
- <groupId>org.hamcrestgroupId>
- <artifactId>hamcrest-coreartifactId>
- exclusion>
- exclusions>
- dependency>
默认情况下依赖的jar可以在项目的任何地方被使用,可以通过scope标签设定其作用范围。
作用范围:
主程序有效(main文件夹范围内)
测试程序有效(test文件夹范围内)
是否参与打包(package指令范围内)
带有依赖作用范围的资源在进行传递时,作用范围将受到影响。