Hello Maven 2 - 坐标和依赖

Maven的坐标元素有groupId,artifactId,version,packaging,classifier
文件名和坐标相对应artifactId-version [-classifier] .packaging

依赖可声明的属性
groupId
artifactId
version
type - 对应项目定义的packaging,默认为jar,一般不用写
scope
    compile - 默认的依赖范围,对编译、测试、运行三种classpath都有效
    test - 测试依赖范围,只对测试classpath有效
    runtime - 与测试和运行classpath有效
    provided - 对编译和测试classpath有效,典型的比如servlet-api运行时容器会提供
    system - 对classpath的影响和provided一样,但是所以来的jar要通过systemPath指定,而不是通过中央仓库

        <dependency>
            <groupId>javax.sql</groupId>
            <artifactId>jdbc-stdext</artifactId>
            <version>2.0</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/rt.jar</systemPath> <!-- 可以引用环境变量 -->
        </dependency>

    import - 不会对三种classpath有影响


optional - 可选依赖,不会被传递。不推荐使用,不符合单一职责设计
exclusions - 排除某些传递依赖

依赖调解
当传递依赖同一个资源的不同版本时,maven会解析传递路径最短的资源,如果路径长度一样,则声明顺序靠前的资源被解析

优化依赖
利用如下命令分析依赖
mvn dependency:list
mvn dependency:tree
mvn dependency:analyze

posted on 2015-03-06 15:03  汤能养身  阅读(224)  评论(0)    收藏  举报

导航