Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141316
  • 博文数量: 19
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 239
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 12:47
文章分类
文章存档

2014年(5)

2013年(4)

2012年(10)

分类: Java

2014-03-13 13:39:08


    ...
    
        
            ...
            ...
            ...
            ...
            ...
            ...
            
                
                ...
                

            

        

        ...
    

    ...

groupId、artifactId和version:依赖的基本坐标
type:依赖的类型对应于项目坐标的packaging。大部分不要用声明,默认jar
scope:依赖的范围
optional:标记依赖是否可选
exclusions:用来排除传递性依赖

依赖范围用来控制依赖与三种classpath(编译classpath、测试classpath、运行classpath)的关系,Maven有一下几种依赖范围:
compile:编译依赖范围。若没指定默认就是该依赖范围。对编译测试运行都有效。如spring-core
test:测试依赖范围。只对测试有效。如JUnit
provided:已提供依赖范围。对编译和测试有效,运行时无效。如servlet-api
    是因为运行项目时候,由于容器已经提供,就不需要Maven重复地引入一遍
runtime:运行时依赖范围。对测试和运行有效,但在编译主代码时无效。如JDBC驱动实现
    是因为编译时候只需要JDk提供的JDBC接口,只有在测试执行时才需要实现接口具体的JDBC驱动
system:系统依赖范围。该依赖与三种classpath的关系和provided依赖范围完全一致。但是system范围的依赖必须通过systemPath元素显示地指定依赖文件的路径。由于依赖不是通过Maven仓库解析的,而且往往与本机绑定,可能造成不可移植,因此应谨慎使用。systemPath可以引用环境变量,如:

    javax.sql
    jdbc-stdext
    2.0
    system
    ${java.home}/lib/rt.jar

import(Maven2.0.9+):导入依赖范围。该依赖范围不会对三种classpath产生实际影响,

第一直接依赖(左一列)和第二直接依赖(上一行)的依赖结果
        compile        test        provided        runtime
compile        compile        --        --            runtime
test        test        --        --            test
provided    provided    --        provided        provided
runtime        runtime        --        --            runtime

可选依赖配置true 理想情况下不应该使用可选依赖,可选依赖不会传递
如果有直接依赖中有可选依赖,就需要手动根据需要选择是否需要此依赖,需要就显示的声明 明确写明依赖

排除依赖

    
        com.juvenxu.mvnbook
        project-c
    


声明exclusion时只需要groupId和artifactId,不需要version元素,传递依赖依赖调节等可以通过这两点确定唯一的传递依赖,若还需要依赖但有不想要传递的那个依赖就可以先排除,然后再下面再添加一个具体想要的依赖(如a依赖b,b依赖不稳定版本c情况,b排除不稳定c,然后再a的pom中直接依赖一个稳定的c)


归来依赖

...
    
        2.5.6
    

    
        
            org.springframework
            spring-core
            ${springframework.version}
        

        
            org.springframework
            spring-beans
            ${springframework.version}
        
        ...
    




mvn dependency:list
mvn dependency:tree
mvn dependency:analyze

阅读(2250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~