首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

第五章 座标和依赖

2012-09-29 
第五章坐标和依赖groupId、artifactId和version是依赖的基本坐标。type为依赖的类型,对应于项目坐标定义的pa

第五章 坐标和依赖

groupId、artifactId和version是依赖的基本坐标。type为依赖的类型,对应于项目坐标定义的packaging。scope是依赖的范围。optional标记依赖是否是可选的。exclusions用来排除传递性依赖。

Compile :编译依赖范围。对于编译、测试、运行三种classpath都有效。是默认的依赖范围。

Test :测试依赖范围。只对测试classpath有效。如Junit

Provided :已提供依赖范围。只对编译、测试classpath有效。如servlet-api,运行时容器已提供。

Runtime :运行依赖范围。只对测试和运行classpath有效。如JDBC驱动实现,编译主代码时只需要JDK提供的JDBC接口。

System :系统依赖范围。与Provided依赖范围一致。但依赖是通过systemPath元素显式指定文件的路径,与本机系统绑定,一般无法移植。

Import :导入依赖范围。不会对3种classpath产生实际影响。

scope

compile classpath

test classpath

runtime classpath

example

compile

Y

Y

Y

spring-core

test

-

Y

-

Junit

provided

Y

Y

-

servlet-api

runtime

-

Y

Y

JDBC驱动实现

system

Y

Y

-

本地的Maven类库文件

第一???????? 第二

compile

test

provided

runtime

compile

compile

-

-

runtime

test

test

-

-

test

provided

provided

-

provided

provided

runtime

runtime

-

-

runtime

疑问:为什么 compile + provided --> no dependency ? 而 provided +provided --> provided ? 个人认为此表完全不对。。。

A->B->C->X(1.0) A->D->X(2.0)? X->2.0

依赖调解第二原则:最先声明:

A->B->X(1.0) A->D->X(2.0) 且B比D先声明,X->1.0

<properties><spring.version>2.5.6</spring.version></properties>

然后在版本信息的位置使用${spring.version}来引用它。

?

18.??可以执行mvn dependency:list或 mvn dependency:tree查看已解析的依赖(resolved dependency)。

?

19.??可以执行 mvn dependency:analyze来分析项目中的直接用到但未显示声明的依赖(Usedundeclared dependencies)和声明了但未用到的依赖(Unused declared dependencies)。Used undeclareddependencies是项目直接用到了,但通过传递依赖引入的项目,这样当项目的直接依赖更新时,传递依赖也会随之更新,从而会导致项目代码与传递依赖不兼容。Unused declared dependencies并不是完全没用的依赖,只是在编译主代码和测试代码时没用,但可能会在执行测试和运行时用到。

1 楼 huiyibuzai 2012-07-01   疑问:为什么 compile + provided --> no dependency ? 而 provided + provided --> provided ? 个人认为此表完全不对。。。


我看书的时候也觉得这表的关系有点不对劲。反正没懂他的表为啥会这样。

热点排行