在Maven中忽略依赖范围的主要步骤是:
- 依赖范围的种类:
- compile:默认范围,适用于所有阶段,会随项目发布。
- provided:像编译时需要,但运行时由JDK或服务器提供。
- runtime:运行和测试阶段需要,但编译时不需要。
- test:只在测试阶段需要。
- system:需要显示的提供包含的 jar。
- import:导入依赖信息,实际不依赖该项。
- 默认情况下,不同范围的依赖只在特定阶段可见。例如test范围依赖只在测试阶段可用。
- 如果要忽略依赖范围,使所有范围的依赖在所有阶段都可用,可以:
- 在命令行执行:
mvn package -Dmaven.test.skip=true
或
mvn install -Dmaven.compile.skip=true
- 在pom.xml中配置:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 也可以在中指定
<scope>runtime</scope>
来替代test或provided范围。
依赖范围的主要作用是:
- 隔离不同构建阶段的依赖,优化构建效率。
- 避免编译时不需要的依赖进入生产环境。
- 区分测试依赖和生产环境依赖。
来看一个简单示例:
- test范围依赖:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>
- 忽略测试范围,在编译阶段使用:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
或在命令行执行:
mvn package -Dmaven.test.skip=true
- 也可以指定
<scope>runtime</scope>
来替代test范围。
所以,通过配置方式忽略依赖范围,我们可以在任意阶段使用所需依赖,实现更灵活的构建管理。