《Maven权威指南》学习笔记十_依赖管理(Dependency Management) 3ff0
2013-03-27 10:41
393 查看
Maven最强大的特征之一:支持了传递性依赖(transitive dependencies)。
Maven同时也提供了一种机制,能让你排除一些你不想要的传递性依赖。
Maven也提供了不同的依赖范围(dependency scope)。
如当一个依赖的范围是"test"的时候,说明它只有在运行compiler:testCompile(测试编译目标)和surefire:test(测试运行目标)的时候才会被加入到classpath中,如果项目是以 war 或者 ear 形式打包的,测试范围依赖就不会被包含在项目的打包输出中。
当用Maven把项目打包成JAR,它的依赖不会被捆绑在生成的构件中,他们只是用来帮助编译。
当用Maven把项目打包成WAR或者EAR,你可以配置Maven让它在生成的构件中捆绑依赖,你也可以配置Maven,使用"provided"范围,让它排除打包文件中特定的依赖。provided范围告诉Maven一个依赖在编译的时候需要,但是它不应该被捆绑在构建的输出中。当你开发web应用的时候provided范围变得十分有用,你需要通过Servlet API来编译你的代码,但是你不希望Servlet API的JAR文件包含在你web应用的WEB-INF/lib目录中。
Maven同时也提供了一种机制,能让你排除一些你不想要的传递性依赖。
Maven也提供了不同的依赖范围(dependency scope)。
如当一个依赖的范围是"test"的时候,说明它只有在运行compiler:testCompile(测试编译目标)和surefire:test(测试运行目标)的时候才会被加入到classpath中,如果项目是以 war 或者 ear 形式打包的,测试范围依赖就不会被包含在项目的打包输出中。
当用Maven把项目打包成JAR,它的依赖不会被捆绑在生成的构件中,他们只是用来帮助编译。
当用Maven把项目打包成WAR或者EAR,你可以配置Maven让它在生成的构件中捆绑依赖,你也可以配置Maven,使用"provided"范围,让它排除打包文件中特定的依赖。provided范围告诉Maven一个依赖在编译的时候需要,但是它不应该被捆绑在构建的输出中。当你开发web应用的时候provided范围变得十分有用,你需要通过Servlet API来编译你的代码,但是你不希望Servlet API的JAR文件包含在你web应用的WEB-INF/lib目录中。
相关文章推荐
- 《Maven权威指南》学习笔记十三_一些依赖查看脚本
- 《Maven权威指南》学习笔记十八_多模块企业级项目 3ff0
- 《Maven权威指南》学习笔记十七_一个多模块项目 3ff0
- iOS 依赖管理工具 CocoaPods 和 Carthage 的使用及原理
- 使用CocoaPods管理依赖库
- ivy+ant 构建管理+依赖管理;解决ivy 发布snapshots版本到nexus中
- 使用CocoaPods来做iOS程序的包依赖管理
- SSM实战——秒杀系统之创建项目、管理依赖、设计数据库
- 详解Android使用Gradle统一配置依赖管理
- 一步一步学习Spring(3)-管理Bean之间的关系二(自动依赖检查)
- maven项目管理之-07-依赖传递
- 使用PHP依赖管理工具Composer安装Guzzle
- Laravel 5.* 安装 Sentry 用户权限管理依赖包
- maven项目管理之-08-依赖冲突
- PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
- 安装第三方依赖管理工具bower
- Android 多渠道打包 Gradle统一依赖管理
- Gradle之依赖管理
- ABP+AdminLTE+Bootstrap Table权限管理系统第四节--仓储,服务,服务接口及依赖注入