Hello Maven 2 - 坐标和依赖

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

依赖可声明的属性
groupId
artifactId
version
type
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

你可能感兴趣的:(maven)