maven-something

<!--dependencyManagement提供一种管理依赖版本好的方式-->
<!--    通常出现在项目的最顶层父POM,-->
<!--    可以让所有在子项目中引用的依赖而不显式的列出版本好,maven会沿着父子层次向上
,直到找到一个拥有dependencyManagement元素的项目,然后就会使用这个元素里面指定的版本-->
<!--    好处:多个子项目都引用一个依赖,避免每个子项都声明一个版本号,想升级,直接父类修改即可
,某个子项目需要更新,声明version就可以-->

<!--  注意:dependencyManagement只是声明依赖,并不实现引入,因此子项目需要显示声明需要用的依赖-->
<!--  子项目不引入,是不会继承父依赖和引入的-->
<!--    注意时type为pom才不引入-->
  <dependencyManagement>
    <dependencies>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.0.0</version>
    </dependency>
    <!--spring boot 2.2.2-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!--spring cloud Hoxton.SR1-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.spring.boot.version}</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>
    </dependencyManagement>

 

 

public class MavenTest {
    /**scope控制dependency元素的使用范围
     * 默认-complie:
     *      被依赖项目需要参与到编译,测试,打包,运行阶段,打包通常包含依赖项目
     *
     * provided:
     *      参与到编译,测试,运行,但是打包时进行了exclude动作
     *      例子:web项目编译可能需要servlet-api.jar.但运行的时候不需要,因为时应用服务器提供了
     * runtime:
     *      无需参与到项目的编译,但会参与到测试和运行阶段
     *      例子:编译时不需要JDBC-API.jar,运行的时候需要
     * test:
     *      仅参与到测试阶段
     * system:
     *      与provide类似,但是被依赖项不会从maven参考查找依赖,而是本地系统获取,需要指定systemPath指定路径
     * import:
     *      只使用在denpendencyManagement中,且type为pom类型
     *      dependencyManagement里面的配置不会实际引入,只为了版本管理,
     *
     */
}

 

posted @ 2020-10-23 08:05  小丑quan  阅读(91)  评论(0编辑  收藏  举报