maven的dependency 和 dependencymanagement

现在maven都会依赖 parent,而在parent中一般会定义dependencymanagement

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.4.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.1</version>
            </dependency>

但是这种dependencyManagement并不是真的在项目中进行了依赖,自己的项目中还是要实际进行依赖,只不过不再需要写明version,而是由parent统一管理。

但是有一种情况需要注意,parent中定义了<scope>provided</scope> 如果子项目不覆盖这个scope 那么还是沿用parent的,而provided的含义是这个jar应该由发布到的web容器提供,也就是说不会随着项目发布,那么对于平时自己测试的代码,这种provided的jar是不会随着发布到自己的web容器的。

所以平时在测试的时候可以把parent中的scope覆盖为compile 方便自己的测试

原文地址:https://www.cnblogs.com/juniorMa/p/7278002.html