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类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **Compile(编译依赖范围)** 默认的依赖范围,如果未明确指定,Maven会将它设为Compile。这类依赖适用于项目的...
<scope>provided</scope> <!-- 添加其他依赖 --> ... ``` ### 四、编写Web应用 在`src/main/java`下创建你的Java类,例如Servlet,实现业务逻辑。在`src/main/webapp/WEB-INF`下编写`web.xml`,配置Servlet...
- `scope`:依赖的作用范围,常见的有: - `compile`:默认作用域,适用于编译、测试和运行时。 - `provided`:已提供,在编译和测试时有效,但在运行时无效。 - `runtime`:运行时,适用于运行时而非编译时。 ...
在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...
2. **依赖范围(Dependency Scope)**:不同类型的依赖有不同的作用范围,如compile(编译时依赖)、runtime(运行时依赖)、test(仅用于测试)等。 3. **依赖冲突解决(Dependency Resolution)**:Maven遵循“最...
<scope>provided</scope> ``` 构建过程可以通过Maven命令行完成,如`mvn clean compile`用于清理项目并编译源代码,`mvn package`会打包成war文件。Maven的生命周期有许多阶段,如validate、compile、test、...
此外,你还可以在pom.xml中定义构建目标,如打包类型(war或jar)、源代码编码、版本控制等。 在项目中,我们可以看到一个名为“module Maven Webapp”的文件夹,这是MyEclipse为Maven项目生成的标准Web应用目录...
当我们谈论“maven-root.pom”,这是一个特殊类型的POM(Project Object Model)文件,通常用于构建多模块 Maven 项目。让我们深入了解一下这个核心概念以及如何有效地利用它。 首先,一个 Maven 项目的基础是它的 ...
- **依赖范围 (Dependency Scope)**:不同类型的依赖具有不同的作用范围,如compile、test、runtime等。 - **版本管理 (Versioning)**:Maven支持SNAPSHOT版本,用于开发过程中未发布的不稳定版本。 - **插件管理 ...
在 Maven 中,仓库分为三种类型:本地仓库、远程仓库和中央仓库。本地仓库位于开发者的机器上,是 Maven 首先查找依赖的地方。 ### Maven 本地仓库的作用 1. **缓存依赖**: 当 Maven 构建项目时,它会检查本地仓库...
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-...
- `packaging`:项目输出的类型,如jar、war等 - `name`和`url`:项目名称和相关URL - `properties`:项目属性,这里指定了源代码的编码格式 - `dependencies`:项目依赖的其他库,每个`<dependency>`标签定义了一个...
同时,Maven提供了统一的接口,使得不同类型的项目可以共享相同的构建脚本和插件,极大地提高了代码的复用性和项目的可移植性。 #### Maven的核心概念:项目 在Maven中,“项目”被看作是一个包含源代码、测试代码...
- **自动生成报告**:Maven可以通过插件生成各种类型的报告,如Javadoc文档、项目依赖图等。 #### 五、集成Tomcat服务器 为了能够在开发过程中自动发布到Tomcat服务器,需要进行额外的配置。 - **配置Tomcat...
2. 在项目类型中选择“Maven”,然后点击“下一步”(Next)。 3. 输入`groupId`、`artifactId`和`version`,这些是Maven项目的标识符,例如:`com.example`、`my-webapp`和`1.0-SNAPSHOT`。 4. 在"Maven Settings...
<scope>provided</scope> <groupId>commons-fileupload <artifactId>commons-fileupload <version>1.4 <groupId>commons-io <artifactId>commons-io <version>2.11.0 ``` 接着,我们需要创建一个...
8. `@Scope`:定义Bean的作用域,如singleton(单例)或prototype(原型)。 **Maven配置** Maven是一个强大的项目管理和依赖管理工具,它通过POM(Project Object Model)文件来管理项目的构建、报告和依赖。在...
--指定依赖类型,默认为jar,如war、ear等。--> <type>jar</type> <!--指定依赖的classifier,例如javadoc、sources等。--> <classifier>javadoc</classifier> <!--排除某些特定的依赖。--> <exclusions> ...
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. ...
- **依赖管理**:通过Scope机制细化依赖关系,避免依赖混乱。 - **文档与构建结果发布**:支持生成各种文档信息,如Javadoc、产品文档等。 - **项目关系管理**:适用于大型项目的多模块管理。 - **移植性管理**:...