原帖地址:http://uule.iteye.com/blog/2087485
Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态。
自从2.0.9后,新增了1种,现在有了6种scope:
-
compile
默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。 -
provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。 - 使用这个时,不会将包打入本项目中,只是依赖过来。
- 使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
- when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.
-
- <!-- Servlet -->
- <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.1</version>
- <scope>provided</scope>
- </dependency>
-
runtime
表示dependency不作用在编译时,但会作用在运行和测试时 -
test
表示dependency作用在测试时,不作用在运行时。 -
system
跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。 例如:
<project>
...
<dependencies>
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
</dependencies>
...
</project>
-
import (Maven 2.0.9 之后新增)
它只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置,例如: This scope is only used on a dependency of type pom in the <dependencyManagement> section. It indicates that the specified POM should be replaced with the dependencies in that POM's <dependencyManagement> section. Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>maven</groupId>
<artifactId>B</artifactId>
<packaging>pom</packaging>
<name>B</name>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>maven</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>d</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
B项目导入A项目中的包配置
相关推荐
使用`<scope>provided</scope>`表明Maven在编译和测试期间会使用这些依赖,但在打包或部署时不包括它们,因为预期目标环境(如JDK或应用服务器)已经提供了这些库。 例如,在开发Web应用程序时,通常需要`javax....
以上内容涵盖了 Maven 的基本使用方法及其核心概念。对于初学者来说,理解 Maven 的工作原理及其命令行用法是非常重要的。随着对 Maven 的深入了解,开发者能够更好地利用 Maven 来优化项目构建流程,提升开发效率。
"Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...
以上介绍的五种方法可以帮助你在Maven项目中配置和使用本地仓库,从而实现更灵活的依赖管理。每种方法都有其适用场景和优缺点,根据实际需要选择合适的方法。务必注意,在使用本地路径或第三方库时,需要确保路径...
Maven是Java世界中的一款强大的项目管理和构建工具,它极大地简化了软件项目的构建、依赖管理...了解并掌握其使用方法,对于Java开发人员来说是非常有价值的。通过下载并安装这个包,你就能开始体验Maven带来的便利了。
总的来说,解决Maven缺失ojdbc6的问题需要理解Maven的依赖管理和本地化依赖的方法。正确配置后,你的项目就能顺利连接到Oracle数据库了。在进行这种操作时,也建议时刻关注Oracle官方的更新和最佳实践,确保使用的...
本手册将深入探讨Maven2的主要特点和用法。 **1. 更快、更简单的构建过程** Maven2的性能得到了显著提升,其构建速度可与Ant相媲美。这得益于优化的内部算法和更高效的依赖管理。 **2. 减少配置文件** Maven2的...
本案例“第一个maven工程案例”旨在帮助初学者快速理解并掌握Maven的基本用法。下面将详细阐述Maven工程的创建、配置以及相关知识点。 1. **Maven工程结构** Maven遵循约定优于配置的原则,一个标准的Maven工程...
配置环境变量`MAVEN_HOME`指向Maven的安装路径,并将`%MAVEN_HOME%\bin`添加到`PATH`变量中,以便在命令行中直接使用Maven。 ### 二、创建Maven Web项目 使用Maven创建Web项目,首先需要创建一个标准的Maven项目...
以上是关于 Maven 的基本使用方法,包括安装配置、创建项目、生成站点文档以及如何使用 Maven 创建 Web 项目并与 Jetty 集成等内容。这些知识点对于初学者来说非常重要,能够帮助他们快速上手 Maven 并进行项目的...
《Maven2完全使用手册》 Maven2是一款强大的Java项目管理和综合工具,它通过提供一套标准化的构建过程,大大...通过理解其核心概念和使用方法,开发者可以更高效地管理项目,专注于代码编写,而不是繁琐的构建过程。
Maven 是一款流行的 Java 项目管理和构建工具,它通过一套标准化的方法来简化项目的构建过程。Maven 的核心价值在于它能够简化项目构建过程,使得开发者能够更加专注于业务逻辑的开发。以下是 Maven 的主要优势: 1...
本文将指导您如何使用Eclipse 创建 Maven 工程,并了解 Maven 的基本概念和使用方法。 一、创建 Maven 工程 在 Eclipse 中创建 Maven 工程非常简单,只需遵循以下步骤: 1. 打开 Eclipse,选择“File”菜单,然后...
### Maven使用方法详解 #### 一、Maven简介与作用 **Maven** 是一款流行的构建工具,它通过提供一种项目对象模型(POM),帮助开发者实现构建过程的自动化,从而简化项目的构建流程。Maven 不仅是一款构建工具,...
最后,关于"mavenweb"标签,可能涉及到的是与Maven相关的Web开发实践,包括但不限于Maven多模块项目构建、使用Maven进行持续集成、处理复杂的依赖管理和冲突解决、自定义Maven插件等。 总的来说,"mavenweb项目创建...
虽然本指南仅覆盖了Maven的基础用法,但在实际开发中,Maven的功能远不止于此。随着经验的增长,您将逐渐掌握更多高级特性,如插件管理、多模块项目构建等。希望这篇指南能帮助您迅速上手Maven!
通过对这些代码的分析和实践,读者可以更好地理解Maven的各个功能和用法。 总结,Maven通过规范化的项目结构、依赖管理和自动化构建流程,极大地提高了开发效率。通过学习并掌握"Maven实战"中的源代码,开发者可以...
在其他项目中直接依赖使用,比如:公用的方法,权限组件等等。 一,新建一个简单的Maven工程,这个Maven工程只含一个pom文件,他是管理各个模块的父级POM,如: Xml代码 <packaging>pom</packaging> <modules> ...
本篇文章将详细讲解如何使用Maven插件`proguard-maven-plugin`来对可执行JAR文件进行混淆。 首先,我们需要理解ProGuard是一个强大的Java类文件混淆器,它可以删除无用的代码,缩短类和方法的名称,以及重新打包类...
使用`<scope>system</scope>`和`<systemPath>`的方式,可以有效地将本地的JAR包纳入到Maven项目的依赖管理中。 #### 2. 安装本地JAR至本地仓库 另一种更为推荐的做法是将本地的JAR包安装到Maven的本地仓库中,通过...