Bootstrap

maven

一、发生冲突时以哪个为准

1、路径优先。

层级浅的优先。

A1-A2-E

B1-E

2、声明优先。

在pom.xml文件里的顺序,前面的优先。

3、特殊优先。

相同资源的不同版本。后面的覆盖前面的。(在pom.xml里的顺序)

二、<optional>标签,值为true,该依赖在maven依赖列表不可见。别人看不到我的这个依赖了。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.1.0.RELEASE</version>
    <optional>true</optional>
</dependency>

三、排除依赖——主动断开依赖的资源,不需要指定版本号

<dependency>
    <groupId>com.niuniu</groupId>
    <artifactId>niuniu-common</artifactId>
    <version>1.0-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
    </exclusions>
</dependency>

四、依赖范围

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.1.0.RELEASE</version>
    <scope>compile</scope>
</dependency>

五、依赖范围的传递性

例如我有两个工程APP01和APP02。我在APP01工程中引入了APP02。APP02工程也配置使用了一些依赖以及依赖的scope。

六、生命周期与插件

例如,执行test,那从第一个到test都会被执行。

例如上图,在pom.xml里配置了生成jar包和test-jar包的插件,phase标签的值是generate-test-resources,就是在generate-test-resources阶段执行。在生命周期列表里找到generate-test-resources,是在install的上方。这样,我在执行maven install的时候,就会生成jar包和test-jar包。

七、模块聚合管理

就像是一个工程,但这个工程只有一个pom.xml文件。该pom.xml文件跟普通的pom.xml文件相比多一行

<packaging>pom</packaging>

以及

<modules>
    <module>子模块名称1</module>
    <module>子模块名称2</module>
</modules>

八、依赖继承

;