maven的pom 文件scope和exclusion标签的作用

时间:2022-09-08 09:25:20 类型:JAVA
字号:    

  1.exclusion

  来排除一些不需要同时下载的依赖jar,可以用来解决 jar包冲突

 <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.10.0</version>
    <exclusions>
        <exclusion>
        <artifactId>log4j-api</artifactId>
        <groupId>org.apache.logging.log4j</groupId>
        </exclusion>
    </exclusions>
</dependency>

log4j-core本身是依赖了log4j-api的,但是因为一些其他的模块也依赖了log4j-api,并且两个log4j-api版本不同,所以我们使用<exclusion>标签排除掉log4j-core所依赖的log4j-api,这样Maven就不会下载log4j-core所依赖的log4j-api了,也就保证了我们的项目中只有一个版本的log4j-api。

2. scope 依赖范围来控制哪些依赖 在哪些classpath 中可用

   5个属性值的含义

 

    compile,缺省值,适用于所有阶段,会打包进项目。

    provided,类似compile,期望JDK、容器或使用者会提供这个依赖。

    runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

    test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

    system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。


<