`

Maven scope 类型

阅读更多
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依赖范围.docx

    Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **Compile(编译依赖范围)** 默认的依赖范围,如果未明确指定,Maven会将它设为Compile。这类依赖适用于项目的...

    Maven Web基础搭建示例

    &lt;scope&gt;provided&lt;/scope&gt; &lt;!-- 添加其他依赖 --&gt; ... ``` ### 四、编写Web应用 在`src/main/java`下创建你的Java类,例如Servlet,实现业务逻辑。在`src/main/webapp/WEB-INF`下编写`web.xml`,配置Servlet...

    Maven 使用入门.pdf

    - `scope`:依赖的作用范围,常见的有: - `compile`:默认作用域,适用于编译、测试和运行时。 - `provided`:已提供,在编译和测试时有效,但在运行时无效。 - `runtime`:运行时,适用于运行时而非编译时。 ...

    Maven的依赖验证项目

    在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...

    maven 实用指南 中文

    2. **依赖范围(Dependency Scope)**:不同类型的依赖有不同的作用范围,如compile(编译时依赖)、runtime(运行时依赖)、test(仅用于测试)等。 3. **依赖冲突解决(Dependency Resolution)**:Maven遵循“最...

    mavenweb项目创建demo

    &lt;scope&gt;provided&lt;/scope&gt; ``` 构建过程可以通过Maven命令行完成,如`mvn clean compile`用于清理项目并编译源代码,`mvn package`会打包成war文件。Maven的生命周期有许多阶段,如validate、compile、test、...

    maven项目demo

    此外,你还可以在pom.xml中定义构建目标,如打包类型(war或jar)、源代码编码、版本控制等。 在项目中,我们可以看到一个名为“module Maven Webapp”的文件夹,这是MyEclipse为Maven项目生成的标准Web应用目录...

    maven-root.pom

    当我们谈论“maven-root.pom”,这是一个特殊类型的POM(Project Object Model)文件,通常用于构建多模块 Maven 项目。让我们深入了解一下这个核心概念以及如何有效地利用它。 首先,一个 Maven 项目的基础是它的 ...

    Maven 最新免安装版本

    - **依赖范围 (Dependency Scope)**:不同类型的依赖具有不同的作用范围,如compile、test、runtime等。 - **版本管理 (Versioning)**:Maven支持SNAPSHOT版本,用于开发过程中未发布的不稳定版本。 - **插件管理 ...

    Maven 本地仓库

    在 Maven 中,仓库分为三种类型:本地仓库、远程仓库和中央仓库。本地仓库位于开发者的机器上,是 Maven 首先查找依赖的地方。 ### Maven 本地仓库的作用 1. **缓存依赖**: 当 Maven 构建项目时,它会检查本地仓库...

    Maven2 的新特性.7z

    Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-...

    Maven安装与配置的详细步骤

    - `packaging`:项目输出的类型,如jar、war等 - `name`和`url`:项目名称和相关URL - `properties`:项目属性,这里指定了源代码的编码格式 - `dependencies`:项目依赖的其他库,每个`&lt;dependency&gt;`标签定义了一个...

    Maven: the complete reference

    同时,Maven提供了统一的接口,使得不同类型的项目可以共享相同的构建脚本和插件,极大地提高了代码的复用性和项目的可移植性。 #### Maven的核心概念:项目 在Maven中,“项目”被看作是一个包含源代码、测试代码...

    eclipse+maven+tomcat集成

    - **自动生成报告**:Maven可以通过插件生成各种类型的报告,如Javadoc文档、项目依赖图等。 #### 五、集成Tomcat服务器 为了能够在开发过程中自动发布到Tomcat服务器,需要进行额外的配置。 - **配置Tomcat...

    idea创建maven Servlet3.0工具

    2. 在项目类型中选择“Maven”,然后点击“下一步”(Next)。 3. 输入`groupId`、`artifactId`和`version`,这些是Maven项目的标识符,例如:`com.example`、`my-webapp`和`1.0-SNAPSHOT`。 4. 在"Maven Settings...

    maven实现的commons-fileupload的demo

    &lt;scope&gt;provided&lt;/scope&gt; &lt;groupId&gt;commons-fileupload &lt;artifactId&gt;commons-fileupload &lt;version&gt;1.4 &lt;groupId&gt;commons-io &lt;artifactId&gt;commons-io &lt;version&gt;2.11.0 ``` 接着,我们需要创建一个...

    spring_annotation maven 的配置

    8. `@Scope`:定义Bean的作用域,如singleton(单例)或prototype(原型)。 **Maven配置** Maven是一个强大的项目管理和依赖管理工具,它通过POM(Project Object Model)文件来管理项目的构建、报告和依赖。在...

    maven3配置文档

    --指定依赖类型,默认为jar,如war、ear等。--&gt; &lt;type&gt;jar&lt;/type&gt; &lt;!--指定依赖的classifier,例如javadoc、sources等。--&gt; &lt;classifier&gt;javadoc&lt;/classifier&gt; &lt;!--排除某些特定的依赖。--&gt; &lt;exclusions&gt; ...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Including and Excluding Dependencies by Scope 12.5.4.4. Fine Tuning: Dependency Includes and Excludes 12.5.4.5. Transitive Dependencies, Project Attachments, and Project Artifacts 12.5.4.6. ...

    maven常见问题问答(超全面)

    - **依赖管理**:通过Scope机制细化依赖关系,避免依赖混乱。 - **文档与构建结果发布**:支持生成各种文档信息,如Javadoc、产品文档等。 - **项目关系管理**:适用于大型项目的多模块管理。 - **移植性管理**:...

Global site tag (gtag.js) - Google Analytics