在使用Maven的过程中,经常会遇到几个核心的概念,准确的理解这些概念将会有莫大的帮助。

1. POM(Project Object Model)项目对象模型

POM 与 Java 代码实现了解耦,当需要升级版本时,只需要修改POM,而不需要更改Java代码,而在POM稳定后,日常的Java代码开发基本不涉及POM的修改。

2. 坐标

groupId , artifactId , version 三个元素是项目的坐标,唯一的标识这个项目。

groupId 项目所在组,一般是组织或公司,artifactId 是当前项目在组中的唯一ID; version 表示版本,SNAPSHOT表示快照,表示此项目还在开发中,不稳定。

groupId 和实际项目不一定是一一对应的,maven 有模块的概念,例如 spring-core, spring-context...;groupId 也不应该只对应公司或组织名,建议具体到项目名,因为公司或者组织下有多个项目,而artifactId只能代表模块名。

3. 依赖

传递性依赖可能带来一些问题,例如两个依赖的版本不兼容,依赖SNAPSHOT可能会导致项目的不稳定问题,依赖的jar包由于版权问题无法使用等等问题,此时,就需要在dependency中用exclusion 排除依赖,然后引入合适的依赖,exclusion中只需提供groupId 和 artifactId 即可。

处理依赖时 好用的命令:(IDE当然更加方便)

mvn dependency:list 查看当前项目的已解析依赖

mvn dependency:tree 查看当前项目的依赖树

mvn dependency:analyze 依赖分析,会给出使用和未使用的jar包

4. 聚合与继承

聚合:

<moduls>

  <modul> m1</modul>

  <modul> m2</modul>

  <modul> m3</modul>

</moduls>

继承:

parent pom 用 <DependencyManagement> 声明依赖,子pom继承后的<dependency>就可以只写groupId 和 artifactId ,其他细节 parent pom中已经声明过了。

5. 快照

A 和 B 合作开发,B 开发的模块依赖A开发的模块,A 发布时version设为快照,例如 2.1-SNAPSHOT,再发布过程中,maven会自动给此版本打上时间戳,B 依赖于此快照版本,当B构建项目时,Maven会自动根据时间戳检查最新版本,并更新。快照版本应该仅在组织内部的项目或者模块间使用;正式发布时,要记得改为正式版本

6. 生命周期

三套独立的生命周期(clean, default, site),每个周期都包含一些阶段。

  clean的三个阶段:

1.pre-clean:执行一些清理前需要完成的工作

2.clean 清理上一次构建生成的文件

3. post-clean 执行一些清理后需要完成的工作

  default的一些关键阶段:

1. process-sources: 处理项目主资源文件,一般是将src/main/resources 目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

2. compile 编译项目的主源码

3. process-test-sources: 处理项目测试资源文件

4. test-compile 编译项目的测试代码

5. test 进行测试

6. package 接受编译好的代码,打包成可发布的格式,例如jar

7. install 将包安装到Maven本地仓库,供本地其他Maven项目使用

8. deploy 将最终的包复制到远程仓库

  site 生命周期

1. pre-site 2. site 3. post-site 4.site-deploy

相对应得几个常用命令 mvn clean; mvn test; mvn clean compile; mvn clean install

Maven学习总结(21)——Maven常用的几个核心概念的更多相关文章

  1. (转)Maven学习总结(四)——Maven核心概念

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(四)——Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Mav ...

  2. (转)Maven学习总结(二)——Maven项目构建过程练习

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...

  3. (转)Maven学习总结(六)——Maven与Eclipse整合

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(六)——Maven与Eclipse整合 一.安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/MavenP ...

  4. MAVEN学习笔记之Maven插件的应用(4)

    MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...

  5. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  6. Maven学习总结(二)——Maven项目构建过程练习

    上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...

  7. Maven学习总结(一)——Maven入门

    原博文出自于:http://www.cnblogs.com/xdp-gacl/p/3498271.html 感谢! 一.Maven的基本概念 Maven(翻译为"专家"," ...

  8. maven 学习1 -安装maven 并执行编译命令

    一.maven 下载与安装(安装好jdk的前提下) 1.下载地址:http://maven.apache.org/download.cgi  (选择最新的zip版本),下载完毕后解压 2.安装:系统p ...

  9. Maven学习(十六)-----Maven存储库

    什么是Maven资源库? 在 Maven 术语里存储库是一个目录,即目录中保存所有项目的 jar 库,插件或任何其他项目特定文件,并可以容易由 Maven 使用. Maven库中有三种类型 local ...

  10. maven学习记录一——maven介绍及入门

    1       Maven的简介 1.1     什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 1.2     Maven好处 普通的传统项目 M ...

随机推荐

  1. 51nod 1785 数据流中的算法 (方差计算公式)

    1785 数据流中的算法 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 难度:3级算法题   51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠 ...

  2. JavaScript学习——使用JS实现首页轮播图效果

    1.相关技术 获取元素 document.getElementById(“id 名称”) 事件(onload) 只能写一次并且放到body标签中 定时操作:setInterval(“changeImg ...

  3. H5页面在线制作工具搜集

    1.初页 http://chuye.cloud7.com.cn/ 2.易企秀 http://eqxiu.com/#/home 3.最酷 http://www.zuiku.com/ 4.易传单 http ...

  4. HTTP——状态码

    (转载) 完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b ...

  5. EularProject 42:单词解码出来的三角形数

    Coded triangle numbers Problem 42 The nth term of the sequence of triangle numbers is given by, tn = ...

  6. iOS开发- Images can’t contain alpha channels or transparencies 解决的方法

    新版的iTunesConnect真是各种问题阿... 蛋疼要命. 上传介绍图片(屏幕截图)的时候 , 遇到了这个问题 Images can't contain alpha channels or tr ...

  7. CF 558D(Guess Your Way Out! II-set解决区间问题)

    D. Guess Your Way Out! II time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  8. extjs Combox 调用数据

    1方法一 从 json获取 var typeStore = new Ext.data.Store({                 proxy : new Ext.data.HttpProxy({u ...

  9. Windows server 2008 布署FTP服务器实例(适用于阿里云)!

    Windows server 2008 布署FTP服务器实例(适用于阿里云). 1.打开管理.配置-用户-新建用户,如:ftp_user,并设置password.选择永只是期和password不能更改 ...

  10. hpuoj--1695--一道签到题(KMP)

    1695: 一道签到题 时间限制: 2 Sec  内存限制: 128 MB 提交: 72  解决: 36 [提交][状态][讨论版] 题目描述 我想说这是一道签到题,意思就是本次测试中最水的一道,不过 ...