当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

Maven scope 类型

发表于: 2014-03-26   作者:czj4451   来源:转载   浏览次数:
摘要: 1. compile 编译范围。默认scope。 在工程编译(classpath)和打包时(如war, ear等,会包含该jar文件)有效。 2. runtime 运行时范围,用于运行和测试。 编译代码时不需要该jar包,打war包时会被包含到其中,供容器动态加载其中的类。 在面向接口编程中应用广泛,编译的是接口,运行时通过 读取配置文件、 获取注
1. compile

编译范围。默认scope。

在工程编译(classpath)和打包时(如war, ear等,会包含该jar文件)有效。


2. runtime

运行时范围,用于运行和测试。

编译代码时不需要该jar包,打war包时会被包含到其中,供容器动态加载其中的类。
在面向接口编程中应用广泛,编译的是接口,运行时通过 读取配置文件获取注解等途径加载具体实现类并实例化。

<dependency>
  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovy</artifactId>
  <version>1.8.3</version>
  <scope>runtime</scope>
</dependency>



3. provided

已提供范围。

表明该jar包已由容器(jetty, tomcat等)或JDK提供,只在编译时使用,不会放到war包中。如J2EE规范的servlet-api和jsp-api等jar包,已由servlet容器提供,war包中有不同版本的包会引起版本冲突,导致容器启动失败。

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
  <scope>provided</scope>
</dependency>



4. test

测试范围。

供src/test/java目录下的单元测试类编译和运行,不会打包到war包中,如TestNG, JUnit等:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.4</version>
  <scope>test</scope>
</dependency>


5. system

系统范围。

当转换ant工程为maven工程时,为了最大程度利用原有类库,减少更改,通过scope的system形式引用原类库路径的jar包。
另外,如果较早的jar包没有版本号,也没有按照maven库的路径规则存放,可以通过此种方式引用:

<dependency>
	<groupId>com.sun</groupId>
	<artifactId>btrace</artifactId>
	<version>1.0</version>
	<scope>system</scope><!-- maven从systemPath去找对应的jar包 -->  
	<systemPath>D:\Program Files\btrace-bin\build\btrace-client.jar</systemPath>
</dependency>

注:当scope为system时,groupId, artifactId和version可以填任意非空值,但去除这三个属性会报错。

Maven scope 类型

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
升级ant配置文件(关于copy maven依赖jar),如何优雅的自动copy scope为system的jar (注:这个文档需要
学了几个maven构件的项目,都没见着scope为system的,今天遇着,pom报错找不到这个包,google了一下
如下图报错,找错 1. 找不到类 org.springframework.scheduling.quartz.QuartzJobBean 2.Ctrl+Shift+
Scope是一组数据的定制视图,可使用定制的布局、显示和品牌创建选项。从RSS新闻推送到天气数据和搜
Scope 是伴随Ubuntu智能手机出现的一个移动端体验新方式,作为一个新兴事物,Scope结合了最新最前沿
什么是隔离 Scope AngularJS 的 directive 默认能共享父 scope 中定义的属性,例如在模版中直接使用
javascript基于原型的继承和面向对象中基于类的继承有那么些微妙的区别,这通常不会有什么大问题,但
面向对象的 JavaScript 编程及其 Scope 处理 本文首先对 JavaScript 的机制进行讲解,并结合当前流
作用域链与[[scope]] 通过调用 Function 构造函数创建的函数对象,其内部的 [[scope]] 属性引用的作
Angular作用域 前言 之前我们探讨过Angular的执行流程,在一切准备工作就绪后(我是指所有directive
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号