Maven课程3 联系客服

发布时间 : 星期三 文章Maven课程3更新完毕开始阅读67ba04da5727a5e9846a61de

依赖管理配置: (1)依赖配置(

dependencies 可以包含一个或者多个 dependency元素,以声明一个或多个项目依赖 , 其包含的元素:

groupId 、artifactId 、 version:依赖的基本坐标,对于任何一个依赖来说,基本的坐标是最重要的, Maven 是根据坐标来找到需要的依赖。

type: 依赖的类型,指定依赖框架或依赖类库的类型,该元素的默认值是jar。另外,还可以指定war、ejb-client、test-jar等值 scope: 依赖的范围

optional: 标记依赖是否可选(参见可选性依赖) exclusions: 用来排除传递性依赖(参见依赖的传递性) 依赖范围详解:(依赖范围:依赖起作用的范围) Maven在编译项目主代码的时候需要使用一套classpath Maven在编译和执行测试的时候会使用另外一套classpath Maven在实际运行项目的时候又会使用一套classpath

依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系

Maven的6种依赖范围:

compile: 编译依赖范围(默认),对于编译、测试、运行三种classpath都有效 test: 测试依赖范围,只对测试classpath有效。典型范例:Junit

provided: 已提供依赖范围对于编译和测试classpath有效,但在运行时无效。典型范例:servlet-api runtime: 运行时依赖范围对于测试和运行classpath有效,但在对编译主代码时无效。典型范例:JDBC

system: 系统依赖范围

import: (maven2.0.9及以上): 导入依赖范围,它不会对三种实际的classpath产生影响。继承父POM文件中用dependencyManagement配置的依赖,import范围只能在dependencyManagement元素中使用(为了解决多继承)

< dependency>

< groupId> org.dayatang.dddlib < artifactId> dddlib-ioc-spring < version> ${dddlib.version}

< dependency>

< groupId> org.dayatang.dddlib

< artifactId> dddlib-persistence-hibernate

< version> ${dddlib.version}

(2)依赖管理 (8.3.3 P150)

Maven提供了dependencyManagement元素帮助管理依赖,既能让子模块继承到父模块的依赖配置,又能保证子模块依赖的灵活性。使用dependencyManagement声明的依赖既不会给父模块引入依赖,也不会给它的子模块引入依赖,不过这段配置是会被子模块继承的,它能够约束dependencies下的依赖使用。在父POM中配置完整的依赖声明,子模块只需要配置简单的groupId和artifactId就能获得对应的依赖信息,从而引入正确的依赖配置。这种依赖管理机制似乎不能减少太多的POM配置,不过还是强烈推荐这种方法。主要原因是在父POM中声明之后,子模块在使用依赖的时候就无需声明版本,也就不会发生多个子模块使用依赖版本不一致的情况,可以帮助降低依赖冲突的机率。

如果子模块不声明依赖的使用,即使该依赖已经在父POM的dependencyManagement中声明了,也不会产生任何实际的效果。与插件管理配置是一个道理。 < dependencyManagement> < dependencies> < dependency>

< groupId> javax.inject < artifactId> javax.inject < version> 1

< dependency>

< groupId> javax.mail < artifactId> mail < version> 1.4.7

< dependency>

< groupId> com.csot.commons

< artifactId> csot-commons-domain

< version> ${csot.commons.version}

< dependency>

< groupId> com.csot.security

< artifactId> csot-security- shiro

< version> ${csot.commons.version} 子模块使用:

junit junit test

org.dayatang.dddlib

dddlib-query-channel

org.hibernate

hibernate-core

org.javassist javassist

org.springframework spring-context