标签:就是 图片 htm ali 自己的 分享图片 仓库管理 enc 私服
https://blog.csdn.net/foreseeu/article/details/50551158
https://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html
首先,maven是一个项目管理和综合工具,它能提供给开发人员一个完成的生命周期框架。它使用标准的目录结构和默认构建生命周期。
目录结构:
maven提供给了我们一个标准的目录结构如下
这种目录结构能让我们很方便的在对应的位置找到对应的文件。而且秩序将文件防盗对应的位置,maven就可以帮助我们做完其它的事情。
pom简介:
pom.xml放在项目的根目录下,它描述了项目的基本信息,组织信息,依赖关系等等。
简单介绍几个基本内容
如图,其中groupID,artifactID,version合起来就是这个项目的坐标,它是唯一的。
依赖:
如上图所示,该项目可以有许多依赖项目,这些依赖项目可以是自己的项目,也可以使别人开发的项目,这里依赖了servlet的api作为例子。
多项目,继承:
父节点
属性:
上图配置了一个spring.version和一个jdk.version,这样的好处是当多处需要使用这些属性的时候,可以用${property}来直接引用,而不需要重复添加这个属性(个人理解类似于全局变量)
pom继承:当子项目很多时,很容易出现一些问题,比如依赖版本不一致等等,这个时候可以使用pom中的继承,与面向对象中的继承类似,它可以从父pom中继承后重写或者进行新的增加,可继承项有:
坐标属性,依赖配置,插件配置,一般性信息(如开发者信息)等等。
对于pom而言,maven中几乎所有的项目的pom都是从super pom继承而来,super pom定义了一组默认设置:
默认的文件位置,默认的插件配置,默认的中央仓库配置等等。
pom多模块构建:如图
即使用继承又使用组合。
仓库:
仓库是用于存储maven所有项目共享的一个构件空间。
分类:本地仓库,远程仓库。
本地用作缓存。
远程仓库有很多种,比如中央仓库和一些其它的公共仓库,私服等。当本地仓库没有找到所配置的依赖时,maven会查找远程仓库并将其下载到本地仓库。
构建生命周期简介:
maven有三套独立的生命周期。
clean有以下三个阶段组成:
pre-clean:预处理
clean:移除上一次构建的文件
post-clean:执行一些clean之后的工作
defeat默认的生命周期有23个阶段:(简介几个常用的)
validate:验证项目是否正确,必要信息是否缺少
process-resources:将一些必要的资源文件复制,为以后打包做准备
compile:编译
test:对代码进行单元测试
package:打包
install:将项目安装到本地仓库
deploy(默认生命周期的最后一个阶段):将我们的包上传到远程仓库
site有以下4个阶段:主要用于生成一些文档等等
pre-site
site
post-site
site-deploy
maven是一个插件式的架构,它由一个很小的引擎加上一大堆插件构成的,所有的插件也是maven构件的一部分,也是由maven仓库管理的
--------------------- 本文来自 foreseeu 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/foreseeu/article/details/50551158?utm_source=copy
好久没进行java方面的开发了,最近又完成了一个java相关的任务,顺便重新体会了 maven 这一利器。
在使用过程中发现以前对maven的理解不够深入,借此机会重新梳理了一下maven的核心概念。相信理解了这些核心概念, 即使长时间不使用,以后再重新上手也会非常容易。
本文以类图的方式,介绍maven核心的12个概念以及相互之间的关系。
maven是一个软件工程(Software Project)管理工具。 对于maven来说,一个软件工程的唯一标识是由开发者(groupId)、生成物(artifactId)、版本(version) 共同决定的。
每个工程都有一个打包类型,可以是jar, war, ear 或 pom。打包类型决定了工程最终产物的类型。 其中pom类型用于构件多模块工程。
工程之间有两种关系:依赖和聚合。
依赖关系的管理是maven最为人称道的地方。一个工程可以依赖多个其他工程, 通过工程的唯一标识(groupId+artifactId+version)可以明确指明依赖的库及版本,而且能够处理 依赖关系的传递。 maven可以指定依赖的作用范围(scope),包括以下几种:
scope | 编译期 | 测试期 | 运行期 | 说明 |
---|---|---|---|---|
*compile | V | V | V | 默认scope |
test | V | 只在测试期依赖,如junit包 | ||
provided | V | V | 运行期由容器提供,如servlet-api包 | |
runtime | V | V | 编译期间不需要直接引用 | |
system | V | V | 编译和测试时由本机环境提供 |
由于依赖关系的传递性可能会导致依赖的版本、scope等发生冲突,maven提供了仲裁机制,同时也 允许自己通过配置进行依赖管理。
前面提到pom类型用于于构件多模块工程,这体现了project之间的一种聚合关系: 将一系列小的模块聚合成整个产品。
通过聚合后的工程可以同时管理每个相关模块的构建、清理、文档等工作。 聚合关系通过在子工程中指定一个pom类型的project作为父project来定义。
maven将工程(Project)的构建过程理解为不同的生命周期(LifeCycle)和阶段(Phase)。 在工程的构建过程中,存在着不同的生命周期,这些生命周期互相独立,之间也没有一定的顺序关系。 每个生命周期又划分为不同的阶段(Phase)。阶段之间有明确的顺序关系, 同一生命周期内的阶段必须按顺序依次执行。
maven内置了三个生命周期,并为每个生命周期内置了一些阶段。 下面列举出maven内置的生命周期及主要的阶段:
更详细的phase说明参考: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
Maven中定义的工程周期和阶段只是抽象的概念,不涉及具体的功能。 具体的功能由插件(Plugin)实现。一个插件可以实现多个目标(Goal)。
为了解耦插件的功能和工程阶段,实现高度的可配置性,maven规定插件只是实现目标的功能, 通过配置来决定在哪个阶段执行(Execution)哪些目标操作。 甚至可以把一个Goal绑定到多个Phase,以实现复用。
maven内置了一些默认的插件,并根据不同的工程packing类型在各个phase中默认绑定了一些goal。 下表中列出default生命周期中各阶段默认绑定的goal,其中goal按照管理使用pluginname:goalname的方式标记:
Pahse | Plugin:Goal |
---|---|
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | ejb:ejb/ejb3:ejb3/jar:jar/par:par/rar:rar/war:war |
install | install:install |
deploy | deploy:deploy |
最后需要说明的是,maven的插件是一种packaging类型为maven-plugin的project, 可以使用maven project的依赖,配置插件等等一切特性。
仓库主要用于获取工程依赖的其他工程的生成物,也可用来部署(deploy)maven工程的生成物。 生成物包括各种打包的生成物以及pom文件。
如果有必要,一个工程可以部署到多个仓库。
仓库可以分为本地库(local)和远程库(remote)。本地库通常位于本机的~/.m2/repository文件夹, 远程库最常见的是maven中央库(),此外也会有一些私服库用于企业内部。
本文梳理了maven的核心概念,整个maven核心概念的全貌如下:
概念 | 说明 |
---|---|
LifeCycle | 生命周期,maven内置default,sie,clean三个生命周期 |
Phase | 阶段,每个生命周期有不同的阶段 |
Plugin | 插件,实现实际的构建功能 |
Goal | 一个插件可以实现多个goal,goal具备具体的功能 |
Execution | 通过配置,决定在某个Phase执行哪些Goal |
Project | maven管理的目标:软件工程,小的工程可以聚合成大工程 |
PackageType | 为了便于管理工程,按照构建目标区分成不同的工程类型,如jar,war,ear等 |
Dependency | 依赖,project之间存在依赖关系 |
DependencyScope | maven对依赖定义了不同的作用范围 |
Management | 可以配置一个工程如何管理依赖关系 |
Repository | 仓库,存放包,分为本地库和远程库 |
Build | 构建的动作。使用maven管理工程,主要是指定将project构建到某个phase |
Date: 2012-12-24 09:20:24 CST
HTML generated by org-mode 6.33x in emacs 23
标签:就是 图片 htm ali 自己的 分享图片 仓库管理 enc 私服
原文地址:https://www.cnblogs.com/mike-mei/p/9740939.html