Maven是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用。Maven 是一款在大型项目开发过程中不可或缺的重要工具。

一、什么是构建?
构建并不是创建,创建一个工程并不等于构建一个项目。
在实际项目中整合第三方框架,Web工程中除了Java程序和JSP页面、图片等静态资源之外,还 包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服 务器上,项目才可以运行。
构建就是以编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

二、构建过程的几个主要环节
1、清理:删除以前的编译结果,为重新编译做好准备。
2、编译:将Java源程序编译为字节码文件。
3、测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
4、报告:在每一次测试后以标准的格式记录和展示测试结果。
5、打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
6、安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
7、部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

三、Maven 核心概念
Maven能够实现自动化构建是和它的内部原理分不开的,从Maven的九个核心概念入手,看看Maven是如何实现自动化构建的。
约定的目录结构
POM
坐标
依赖管理
仓库管理
生命周期
插件和目标
继承
聚合

1、约定的目录结构
(1)、创建约定的目录结构:
[1]根目录:工程名
[2]src目录:源码
[4]main目录:存放主程序
[6]Java目录:存放Java源文件
[7]resource目录:存放框架或其他工具的配置文件
[5]test目录:存放测试程序
[8]Java目录:存放Java源文件
[9]resource目录:存放框架或其他工具的配置文件
[3]pom.xml文件:maven工程的核心配置文件
(2)、Maven的核心程序中仅仅定义了抽象的生命周期,而具体的操作则是由Maven的插件来完成的,Maven的插件并不包含在Maven的核心程序中。
在首次使用时需要联网下载。下载得到的插件会被保存到本地仓库中。本地仓库默认的位置是:~\.m2\repository。
执行maven命令需要用到某些插件时,maven核心程序会首先到本地仓库中查找,maven核心程序如果在本地仓库找不到需要的插件,那么maven会自动联网到中央仓库下载。如果此时无法连接外网,则构建失败。
修改默认本地仓库的位置可以让maven核心程序到事先准备好的目录下查找:
[1]找到maven解压目录\conf\settings.xml
[2]在setting.xml文件中找到localRepository标签
[3]将<localRepository></localRepository>从注释中取出来
[4]将标签体内容修改为已准备好的maven仓库目录
(3)、为什么要遵守约定的目录结构?
maven要进行自动编译,那么maven必须知道Java源文件保存在哪里。
如果自定义的东西想要框架或工具知道,有两种方法:以配置的方式明确告诉框架;遵守框架内部已经存在的约定。
约定 > 配置 > 编码
(4)、常用的maven命令
执行与构建过程相关的maven命令,必须进入pom.xml所在的目录。
mvn clean:清理
mvn compile:编译主程序
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn install:安装
mvn site:生成站点

2、POM
Project Object Model:项目对象模型。将Java工程的相关信息封装为对象作为便于操作和管理的模型。
pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。可以说学习Maven就是学习pom.xml文件中的配置。

3、坐标
Maven使用如下三个向量在Maven的仓库中唯一的确定一个Maven工程。
[1]groupid:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
自定义的Maven工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

4、仓库管理
(1)、分类
本地仓库:为当前本机电脑上的所有Maven工程服务。
远程仓库
[1]私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务。

[2]中央仓库:架设在Internet上,为全世界所有Maven工程服务。
[3]中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。
(2)、仓库中的文件
[1]Maven的插件
[2]自己开发的项目的模块
[3]第三方框架或工具的jar包
不管是什么样的jar包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。

自动化构建工具maven的更多相关文章

  1. 01_自动化构建工具之Maven

    目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...

  2. 浅谈maven自动化构建工具

    转载https://blog.csdn.net/zxm1306192988/article/details/76209062 Maven是什么[what] 1.Maven 是 Apache 软件基金会 ...

  3. 玩转SpringBoot之MyBatisplus自动化构建工具

    使用MyBatisplus自动化构建项目 为什么要用这个? 方便 因为之前那种方式让我用起来不爽了:mybatis逆向工程(MyBatis Generator) 能紧密的贴合mybatis,并且MyB ...

  4. Jenkins敏捷开发 自动化构建工具

    一.序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面. 所谓自动化构建是按照一定 ...

  5. gulp自动化构建工具

    gulp    自动化构建工具,实时监控.代码合并.压缩... http://www.gulpjs.com.cn/     中文网 http://gulpjs.com/plugins/     英文网 ...

  6. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  7. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  8. 项目管理及自动构建工具Maven

    项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...

  9. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

随机推荐

  1. Luogu 3629 [APIO2010]巡逻

    先考虑$k = 1$的情况,很明显每一条边都要被走两遍,而连成一个环之后,环上的每一条边都只要走一遍即可,所以我们使这个环的长度尽可能大,那么一棵树中最长的路径就是树的直径. 设直径的长度为$L$,答 ...

  2. JButton变换样式

    JButton变换样式 摘自:绘制JButton圆角效果 http://caleb-520.iteye.com/blog/1039493 RButton btnNewButton_1 = new RB ...

  3. 自己实现 String 类

    实现Stirng类:构造函数.复制构造.拷贝构造.重载<<符号(友元) #include <iostream> #include <string.h> #inclu ...

  4. FileInfo类和DirectoryInfo类

    FileInfo类和DirectoryInfo类可以方便地对文件和文件夹进行操作. 1. FileInfo类(非静态类) FileInfo类和File类之间许多方法调用都是相同的,但是FileInfo ...

  5. java 获取前几天时间

    java   获取前几天时间 一.toLocaleString()函数过时: //当前时间   Date endDate=new Date();   String endTime=endDate.to ...

  6. C 语言 clock() 函数,例:计算多项式值

    C 语言 clock() 函数,例:计算多项式值 /** * clock(): 捕捉从程序开始运行到 clock() 被调用时所耗费的时间. * 这个时间单位是 clock tick, 即" ...

  7. ubuntu - 14.04,安装Eclipse(开源开发工具)

    一,安装JDK:Eclipse必须有JDK才能运行,所以首先我们确定系统是否已经安装了JDK,我们在shell里面输入:“java -version”,如果已经安装了,就会打印出来当前JDK版本信息, ...

  8. echarts设置地图大小比例,大小设置

    设置地图大小可通过以下属性设置: geo.aspectScale number [ default: 0.75 ] 这个参数用于 scale 地图的长宽比. 最终的 aspect 的计算方式是:geo ...

  9. Node JS爬虫:爬取瀑布流网页高清图

    原文链接:Node JS爬虫:爬取瀑布流网页高清图 静态为主的网页往往用get方法就能获取页面所有内容.动态网页即异步请求数据的网页则需要用浏览器加载完成后再进行抓取.本文介绍了如何连续爬取瀑布流网页 ...

  10. Build SSH for Development on Windows Subsystem for Linux

    It seems that Windows Subsystem for Linux (WSL) is getting much more mature than the time when it fi ...