关于Maven的scope

Maven的web项目中,如果要依赖的项目的scope范围为test。

<dependencies>
	<dependency>
		<groupId>com.tmp</groupId>
		<artifactId>tmpmvn</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<scope>test</scope>
	</dependency>
</dependencies>

 在打包成war时就不会下载对应的jar,在mvn install时就会找不到对应项目的内容而报错。

 

 

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Testwebmvn: Compilation failure: Compilation failure:

[ERROR] /E:/space/Testwebmvn/src/com/tmp/test/Test.java:[3,22] 程序包com.tmp.tmpmvn不存在

[ERROR] /E:/space/Testwebmvn/src/com/tmp/test/Test.java:[7,17] 找不到符号

[ERROR] 符号:   类 Util

[ERROR] 位置: 类 com.tmp.test.Test

[ERROR] /E:/space/Testwebmvn/src/com/tmp/test/Test.java:[7,33] 找不到符号

[ERROR] 符号:   类 Util

[ERROR] 位置: 类 com.tmp.test.Test

[ERROR] /E:/space/Testwebmvn/src/com/tmp/test/Test.java:[9,36] 找不到符号

[ERROR] 符号:   变量 Util

[ERROR] 位置: 类 com.tmp.test.Test

只要把dependency中的scope去掉就可以解决问题。

<dependencies>
	<dependency>
		<groupId>com.tmp</groupId>
		<artifactId>tmpmvn</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>
</dependencies>

 

Dependency Scope 

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值: 

* compile,缺省值,适用于所有阶段,会随着项目一起发布。 
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

猜你喜欢

转载自a1b19pm.iteye.com/blog/2331039