第四章 略
第五章
Maven 的坐标:
<groupId>org.apache.mrunit</groupId> <artifactId>mrunit</artifactId> <version>1.0.0</version> <packaging>jar<packaging>(可选)
Maven的依赖:
dependences元素
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.0.0-cdh4.2.1</version>
<type>jar</type> (依赖的类型,默认是jar,一般不用设定)
<optional>...</optional> (标记依赖是否可选)
<exclusions> (排除传递性依赖)
<exclusion>
<artifactId>kfs</artifactId>
<groupId>net.sf.kosmosfs</groupId>
</exclusion>
</exclusions>
<scope>provided</scope> (依赖的范围)
</dependency>
依赖范围:
compile:编译依赖范围,默认该依赖,对编译、测试和运行三种classpath都是有效的
test:测试依赖范围;
provided:已提供依赖范围;提供过不会重复提供
runtime:运行时依赖范围;如JDBC驱动的实现
system:系统依赖范围
可传递性依赖:
A->B->C 那么 A->C
一: 依赖范围scope
共5种,compile (编译)、test (测试)、runtime (运行时)、provided、system
不指定,则依赖范围默认为compile.
compile:编译依赖范围,在编译,测试,运行时都需要。
test: 测试依赖范围,测试时需要。编译和运行不需要。如Junit
runtime: 运行时依赖范围,测试和运行时需要。编译不需要。如JDBC驱动包
provided:已提供依赖范围,编译和测试时需要。运行时不需要。如servlet-api
system:系统依赖范围。本地依赖,不在maven中央仓库。
二:依赖的传递
A->B(compile) 第一关系: a依赖b compile
B->C(compile) 第二关系: b依赖c compile
当在A中配置
<dependency>
<groupId>com.B</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>
则会自动导入c包。关系传递如下表:
3.依赖冲突的调节
A->B->C->X(1.0)
A->D->X(2.0)
由于只能引入一个版本的包,此时Maven按照最短路径选择导入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路径长度一致,则优先选择第一个,此时导入x(1.0)
4.排除依赖
A->B->C(1.0)
此时在A项目中,不想使用C(1.0),而使用C(2.0)
则需要使用exclusion排除B对C(1.0)的依赖。并在A中引入C(2.0).
pom.xml中配置
<!--排除B对C的依赖-->
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>0.1</version>
<exclusions>
<exclusion>
<groupId>C</groupId>
<artifactId>C</artifactId><!--无需指定要排除项目的版本号-->
</exclusion>
</exclusions>
</dependency>
<!---在A中引入C(2.0)-->
<dependency>
<groupId>C</groupId>
<artifactId>C</artifactId>
<version>2.0</version>
</dependency>
5.依赖关系的查看
cmd进入工程根目录,执行 mvn dependency:tree
会列出依赖关系树及各依赖关系
mvn dependency:analyze 分析依赖关系
相关推荐
Maven使用实战-从入门到精通实践【张振华.Jack】 Maven简介、Maven主要做什么用? 项目对象模型(POM) 坐标(Coordinates)、打包方式(Packaging)、项目描述 项目子父级关系(parent) 依赖管理(dependency),冲突了...
【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...
《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...
3. **compile**:执行Default生命周期中的`compile`阶段,调用`maven-compiler-plugin`的`compile`目标来编译源代码。 4. **test**:执行Default生命周期中的`test`阶段,调用`maven-surefire-plugin`的`test`目标来...
Maven 实战(361)_12804356.pdf
Maven的实战性强,意味着在学习和使用过程中,通常会结合大量的实例操作,使读者能更好地理解和掌握Maven的具体应用。本书由许晓斌执笔,是国内首本全面介绍Maven的专著,基于最新的Maven3.0版本编写,详细介绍了...
Maven-教案-实战.pdf
** Maven实战:所有源代码详解 ** Maven是一款强大的项目管理和构建工具,广泛应用于Java开发领域。它通过一套约定优于配置的原则,简化了项目的构建、依赖管理以及文档生成等工作。本篇文章将深入探讨"Maven实战...
《Maven实战源码》是一本专为Java开发者设计的指南,旨在帮助初学者和有经验的开发者深入理解和掌握Maven这一强大的项目管理和构建工具。Maven不仅简化了项目的构建过程,还通过依赖管理和插件机制,使得软件开发...
** Maven 详细教程 实战 例子 电子书 ** Maven 是一个强大的项目管理工具,广泛应用于Java开发领域。它简化了构建、依赖管理和项目生命周期的管理,使得开发者能够更专注于代码本身,而不是构建过程。本教程将深入...
标题:“Maven3实战笔记07继承” 描述:“Maven3实战笔记07——继承的介绍。” Maven作为Java项目管理工具,其强大的功能之一便是支持项目的继承特性,这一特性在构建大型、复杂的多模块项目时显得尤为重要。通过...
四、实战应用 1. **集成Swagger**:如果项目使用了Swagger注解,只需在配置中开启Swagger模式,Smart Doc会自动识别并生成文档。 2. **自定义模板**:通过提供自己的模板文件,可以调整文档的展示样式,满足个性化...
Maven 实战(书签版) 影印版,影印规整,十分清晰,强烈推荐!
- **培训目标**:旨在让学员从Maven专家那里直接学习到实战经验和最佳实践。 - **培训方式**:通过交互式的WebEx培训环境,学员可以实时与在线讲师互动。 - **提供的课程**: - MVN-101 Maven Mechanics:为期两天...
《Maven3实战》这本书是Java开发者不可或缺的参考资料,它深入浅出地介绍了Maven这一强大的项目管理和构建工具。在Java开发中,Maven3以其规范化的项目结构、自动化构建和依赖管理等功能,极大地提高了开发效率和...
NULL 博文链接:https://jackyin5918.iteye.com/blog/2405459
### Maven在IDEA中的实战应用 在IntelliJ IDEA这类集成开发环境中,Maven可以更加便捷地管理项目依赖和构建过程。开发人员可以在IDEA中通过图形界面操作Maven的常用命令,并对项目结构和配置文件进行修改。 ### ...
#### 三、Maven实战案例 - **简单的Maven项目** - 介绍了如何创建一个简单的Maven项目,并进行构建。 - 包括项目对象模型的概念及其重要性。 - 核心概念讲解,如插件和目标、生命周期、坐标、仓库、依赖管理和...