依赖<dependency>的scope了解
maven项目,添加依赖的时候,<dependency>内会有scope选项,默认是compile。
网上也有不少介绍,有一个<import>没看明白,专门试了下,记录如下。
新建项目testd为pom类型。再建子模块,但是不依赖testd这个项目(即父项目不指定),对应pom如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>normal</groupId>
<artifactId>testd</artifactId>
<version>1.0-SNAPSHOT</version>
<name>testd</name>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- <parent>--> <!-- <artifactId>testd</artifactId>--> <!-- <groupId>normal</groupId>--> <!-- <version>1.0-SNAPSHOT</version>--> <!-- </parent>--> <modelVersion>4.0.0</modelVersion> <artifactId>testson1</artifactId> <groupId>normal</groupId> <version>1.0-SNAPSHOT</version> <dependencyManagement> <dependencies> <dependency> <groupId>normal</groupId> <artifactId>testd</artifactId> <version>1.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> </project>
testson1里测试junit是否可以使用,比较简单,就是判断@Test是否可以导入,代码如下:
public class SampleTest { @Test public void testDependency() { } }
个人理解总结:使用<scope>import</scope>这个范围限制,可以在不继承父项目的情况下,使用指定项目的特定依赖(改部分依赖是pom项目里指定版本的,可以理解是特殊管理的jar类型)