- 浏览: 962171 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
依赖具有范围,默认为全局范围
也可以指定依赖范围
Maven有以下几种依赖范围:
compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;
test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;例如对于servlet的依赖,只有在测试和编译时有效,之后就无效了
runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;
system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。
依赖传递性
简单点理解,可以看成A依赖B,B依赖C,那么A也依赖C
Maven建立一个依赖图,并且处理一些可能发生的冲突和重叠。例如,如果Maven看到有两个项目依赖于同样的groupId和artifactId,它会自动整理出使用哪个依赖,选择那个最新版本的依赖。虽然这听起来很方便,但在一些边界情况中,传递性依赖会造成一些配置问题。在这种情况下,你可以使用依赖排除。
另外,如果依赖指定了范围,那么在进行传递性依赖的时候,会做一些算法,包括如下
compile范围的依赖,会一直传递给其他范围
provided范围的依赖,只会传递给provided范围的
runtime范围的依赖,会传递给runtime和provided范围和test范围
test范围只会传递给test
排除传递依赖
通过exclusions和exclusion
当版本冲突时maven默认选择最新的。
但是当artifactId和artifactId不一样的时候,Maven就会认为它们是两种不同的类
库。
dependencyManagement
dependencyManagement可以作为父pom对只项目的依赖管理的统一控制
依赖版本界限
可以指定范围
(, )
不包含量词
[, ]
包含量词
如[4.0,)
,“[4.0,)”意思是任何大于等于4.0的版本,“(,2.0)”意思是任意小于2.0的版
本。“[1.2]”意思是只有版本1.2,没有其它。
方括号和圆括号可以混合用。
方括号可以看成 >= 和<=
圆括号可以看成 >和<
也可以指定依赖范围
Maven有以下几种依赖范围:
compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;
test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;例如对于servlet的依赖,只有在测试和编译时有效,之后就无效了
runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;
system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。
依赖传递性
简单点理解,可以看成A依赖B,B依赖C,那么A也依赖C
Maven建立一个依赖图,并且处理一些可能发生的冲突和重叠。例如,如果Maven看到有两个项目依赖于同样的groupId和artifactId,它会自动整理出使用哪个依赖,选择那个最新版本的依赖。虽然这听起来很方便,但在一些边界情况中,传递性依赖会造成一些配置问题。在这种情况下,你可以使用依赖排除。
另外,如果依赖指定了范围,那么在进行传递性依赖的时候,会做一些算法,包括如下
compile范围的依赖,会一直传递给其他范围
provided范围的依赖,只会传递给provided范围的
runtime范围的依赖,会传递给runtime和provided范围和test范围
test范围只会传递给test
排除传递依赖
<dependency> <groupId>org.sonatype.mavenbook</groupId> <artifactId>project-a</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>org.sonatype.mavenbook</groupId> <artifactId>project-b</artifactId> </exclusion> </exclusions> </dependency>
通过exclusions和exclusion
<dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.2.5.ga</version> <exclusions> <exclusion> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jta_1.1_spec</artifactId> <version>1.1</version> </dependency> </dependencies>
当版本冲突时maven默认选择最新的。
但是当artifactId和artifactId不一样的时候,Maven就会认为它们是两种不同的类
库。
dependencyManagement
dependencyManagement可以作为父pom对只项目的依赖管理的统一控制
依赖版本界限
可以指定范围
(, )
不包含量词
[, ]
包含量词
如[4.0,)
,“[4.0,)”意思是任何大于等于4.0的版本,“(,2.0)”意思是任意小于2.0的版
本。“[1.2]”意思是只有版本1.2,没有其它。
方括号和圆括号可以混合用。
方括号可以看成 >= 和<=
圆括号可以看成 >和<
发表评论
-
Invalid signature file digest for Manifest main attributes
2015-09-23 14:26 8313java.lang.SecurityException: In ... -
Unable to locate Spring NamespaceHandler for XML schema namespace
2015-09-23 14:00 2328org.springframework.beans.facto ... -
利用maven的filter和profile实现不同环境使用不同的配制
2015-07-30 12:54 723通过命令行模式 https://liyixing1.itey ... -
Nexus 仓库管理器
2015-04-02 11:15 1134简介 仓库管理器有两个 ... -
Profile
2015-03-30 11:55 633Profile是可以在指定环境通过指定指令或者自动触发,用来 ... -
settings.xml
2014-12-31 10:41 754settings.xml文件可以放在两个地方 • Maven安 ... -
属性 自定义属性 资源过滤
2014-12-30 21:57 1248通过${}访问属性 。Mave ... -
版本号规范,镜像版本SNAPSHOT,LATEST 和 RELEASE 版本
2014-12-30 16:46 6148如果版本号不遵守maven规范,那么maven在对版本进行排序 ... -
依赖传递分析 dependency 插件
2014-12-30 15:29 975基本分析: mvn dependency:analyze 可 ... -
多模块项目
2014-12-29 17:02 508多模块首先需要创建一个父项目,父项目负责对子项目的管理,按照规 ... -
archetype
2014-12-28 21:15 766网址 该插件为maven原型插件,该插件平台上存储了多种常见的 ... -
打包插件 assembly
2014-12-27 14:14 786http://maven.apache.org/plugins ... -
测试插件,surefire-plugin
2014-12-27 13:41 884主页 完整参数 maven默认配置已经加载过该插件 相当于 ... -
插件,插件目标,生命周期,坐标,仓库,依赖管理
2014-12-25 16:07 491插件与目标(Plugins and g ... -
help插件
2014-12-24 15:56 733Maven Help 插件有四个目标。前三个目标是—— act ... -
pom.xml
2014-12-24 13:57 741每个maven文件都需要一 ... -
安装maven及测试第一个项目
2014-12-23 11:57 510maven需要配置几个环境变量 M2_HOME,用来指定mav ... -
maven的优势理解
2014-12-23 11:51 10131.对于svn等版本控制的库而言,具有减少上传空间的作用,这个 ... -
maven转eclipse JEE应用
2011-06-19 15:26 2439我的maven结构是 外层应用 biz应用 web应用 创 ...
相关推荐
本文将深入探讨Maven如何处理多项目依赖关系,并结合标签“源码”和“工具”,探讨其在实际开发中的应用。 一、Maven项目结构与POM.xml 每个Maven项目都有一个核心配置文件——`pom.xml`,它定义了项目的元数据,...
2. **Maven配置差异**:项目依赖管理工具(如Maven)的不同配置也可能导致问题。 3. **依赖缺失**:项目依赖未被正确识别或安装。 4. **构建脚本问题**:构建脚本(如pom.xml)可能存在问题。 #### 三、解决方案 ...
在这个“moquette项目依赖包”中,包含了运行和构建Moquette服务器所必需的jar文件。 首先,我们要理解在Java项目中,jar(Java Archive)文件是预编译的类文件和资源文件的集合,它们被打包在一起,以便于分发和...
这个“android5.0项目依赖工程”是一个专门为Android 5.0优化的开发框架,它将多个组件整合到一个单一的依赖项中,以便开发者可以更方便、高效地进行开发工作。下面我们将深入探讨这个依赖工程所涉及的核心知识点。 ...
"Maven 项目依赖关系管理" Maven 项目依赖关系管理是 Java 应用程序开发中非常重要的一步。Maven 是一种流行的项目管理工具,可以帮助开发者快速构建和管理项目。然而,在实际开发中,我们常常会遇到一些不可以在...
本文详细介绍了C语言项目依赖管理的策略、工具和实践,并通过案例分析展示了如何将这些方法应用于实际项目中。通过这些方法,开发者可以更有效地管理和维护C语言项目的依赖,提高项目的质量和效率。 有效的依赖管理...
暂时的项目依赖
1. **依赖管理**:Maven能够自动处理项目依赖,开发者只需在POM文件中声明所需的库,Maven会自动下载并管理这些依赖。 2. **项目信息管理**:Maven能够统一管理项目的元数据,如项目名称、版本号、开发者信息等。 ...
Maven依赖管理遵循“传递性”原则,即如果你的项目依赖A库,而A库又依赖B库,Maven会自动将B库也一并引入。这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`...
Java中的Maven是一个至关重要的构建工具,它极大地简化了Java应用程序的开发过程,尤其是在管理项目依赖方面。Maven通过一个名为`pom.xml`的项目对象模型(Project Object Model)文件,来定义项目的构建规则、依赖...
标题中的“Node.js-David帮助你的Node.js项目依赖保持最新”揭示了我们今天要讨论的主题:使用David这个工具来管理并确保Node.js项目的依赖库始终处于最新状态。在Node.js开发过程中,保持依赖库的更新至关重要,...
idea 运行项目依赖war包的办法 不需要用新tomcat运行,直接和项目一起启动的办法.
Android Studio jar、so、library项目依赖,资源对应博文: http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/
IDEA 开发多项目依赖的方法 本文主要介绍了使用 IntelliJ IDEA 创建多模块项目的方法,并详细讲解了如何使用 Maven 创建父工程、子模块,以及如何管理依赖关系。下面是相关的知识点: 1. IntelliJ IDEA 是一款功能...
Maven 项目依赖 jar 包导出详细教程 Maven 是一个Project Object Model(POM)项目管理工具,广泛应用于 Java 项目中。其中一个非常重要的功能是管理项目依赖关系。下面我们将详细介绍如何将 Maven 项目依赖的 jar ...
Vitmio项目依赖是针对Vitmio视频直播项目的核心组件,这个依赖包含了项目运行所必需的库和资源。为了确保视频直播项目的正常运作,开发者需要将这些依赖正确地集成到他们的主项目中。以下是对Vitmio项目依赖的详细...
Maven 是一个流行的 Java 项目依赖管理工具
c++管理 Windows C_C++ 项目依赖库的命令行工具.zip
一个用于管理 Windows C/C++ 项目依赖库的命令行工具
该文档是如何查看maven项目依赖的jar包树,请大家下载!