坐标是maven的核心概念之一,另外几个核心概念是依赖、仓库、生命周期、插件
本文总结一下坐标和依赖的几个要点
“坐标”是maven引入项目构建的概念,此前ant是没有这个概念的。maven将jar包、项目的构建成品等,都统一看做是“构件”,而坐标就是构件的唯一标识。通过坐标,maven就能找到任何一个构件,并且管理依赖关系
坐标由以下元素组成:groupId、artifactId、version、packaging、classifier
groupId,是当前maven项目隶属的实际项目。而不仅仅是到组织层面,因为一个组织往往会有多个实际项目,如果groupId仅仅指向组织,那就无法标识实际项目的模块了。实际项目和maven项目,是一个“一对多”的关系
比如说,我们接下来要做的任务管理重构项目,准备基于maven构建,那这个项目的groupId就应该是com.huawei.wfm.task
artifactId,即当前的maven项目,可以视为实际项目的一个模块,推荐的做法,是用实际项目名称,作为artifact的前缀
比如说,接下来这个任务子系统,有一个模块是流程引擎,那么这个maven项目的aftifactId就应该是task-process
version,就很好理解了,是项目的版本号
packaging,是项目的打包方式,常见的有jar、war等
classifier,是用来帮助定义构建输出的一些附属构建,如javadoc、source等,需要依赖插件,不能直接定义
下面说说“依赖”的一些要点:
1、首先需要知道,maven构建项目的时候,会有3套classpath。编译项目主代码的classpath、编译和执行测试代码的classpath、实际运行时的classpath
2、依赖范围,和上面说的第一点密切相关
maven有以下几种依赖范围,包括compile、test、provided、runtime、system、import
如果在pom中没有特别声明scope的话,默认是compile的依赖范围
3、依赖传递
这个很好理解,比如项目依赖了spring-framework,而spring-framework又是依赖common-logging的,那么项目也就依赖common-logging
要注意的是,依赖传递的概念,需要和上面说的依赖范围一起理解
另一个问题是,在实践中,有时候需要排除传递性依赖。比如说项目A依赖项目B,而项目B依赖项目C的1.0版本。但是项目A希望依赖项目C的2.0版本,这个时候就需要在项目A的pom中显式的声明
<dependencies>
<dependency>
<artifactId>project-b</artifactId>
<exclusions>
<exclusion>
<artifactId>project-c</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<artifactId>project-c</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
4、依赖调解
这里有2个原则:第一个是路径最近者优先,第二个是第一声明者优先
分享到:
相关推荐
读书笔记:Maven 实战读书笔记
读书笔记:maven实战学习笔记
读书笔记:Maven 实践学习按理阅读《Maven实战》笔记。
从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...
### Maven3实战笔记08——Maven反应堆:深度解析与实战应用 #### Maven反应堆的概念与作用 在深入探讨Maven反应堆之前,我们首先需要理解Maven项目是如何组织和构建的。Maven是一种自动化构建工具,它通过定义项目...
《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...
Maven实战的笔记,通读了Maven实战这本书之后,结合自己的经验,提取了其中大部分使用的操作以及使用经验。采用md编写文档,使用markdown编辑器查看效果更佳
### Maven3实战笔记05仓库依赖解析与插件解析 #### 一、Maven仓库依赖解析 Maven 是一个项目管理和构建工具,它通过一种称为“仓库依赖解析”的过程来管理项目的依赖关系。仓库依赖解析是指Maven如何查找并解决...
通过阅读《Maven3实战笔记(全)》,开发者不仅可以掌握Maven的基本操作,还能了解到如何高效地利用Maven解决实际项目中的问题,提升开发效率。书中生动的实例和幽默的讲解方式,使得学习过程更为轻松愉快。对于任何...
Maven 实战(361)_12804356.pdf
### Maven实战——入门篇 #### Maven简介与概念 Maven是一种强大的、跨平台的项目管理工具,主要用于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目还是大型的企业级应用,Maven都能...
### Maven实战:Maven的安装、配置及使用入门 #### Maven概述 Maven是一款流行的Java项目管理和理解工具,由Sonatype公司支持,并广泛应用于Java项目的构建、依赖管理和文档生成等领域。Maven通过一种约定优于配置...
根据给定的文件信息,我们可以提取出关于"Maven3实战笔记整合"的知识点。由于文件内容部分出现了大量的乱码和不完整字符序列,无法直接从中提取有用的信息。但是,我们可以根据标题和描述以及通用的Maven知识点,来...
** Maven实战:所有源代码详解 ** Maven是一款强大的项目管理和构建工具,广泛应用于Java开发领域。它通过一套约定优于配置的原则,简化了项目的构建、依赖管理以及文档生成等工作。本篇文章将深入探讨"Maven实战...
标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...
接着,书中的内容逐步深入,详细讲解了Maven的核心概念,例如坐标和依赖管理、仓库管理、生命周期和插件的使用、聚合与继承等,这些都是使用Maven时必须掌握的基础知识。 本书还介绍了Maven在实际开发中的高级应用...
读书笔记:maven资源&《Maven实战》 TOREAD 《Maven实战完整版》
【Maven3实战笔记】 Maven3是一款强大的Java项目管理和集成工具,由Apache软件基金会开发。它通过提供一套标准化的构建、依赖管理和项目信息管理的方式来简化项目的生命周期。本实战笔记将深入探讨Maven3的核心概念...