自动化构建工具maven
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的更多相关文章
- 01_自动化构建工具之Maven
目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...
- 浅谈maven自动化构建工具
转载https://blog.csdn.net/zxm1306192988/article/details/76209062 Maven是什么[what] 1.Maven 是 Apache 软件基金会 ...
- 玩转SpringBoot之MyBatisplus自动化构建工具
使用MyBatisplus自动化构建项目 为什么要用这个? 方便 因为之前那种方式让我用起来不爽了:mybatis逆向工程(MyBatis Generator) 能紧密的贴合mybatis,并且MyB ...
- Jenkins敏捷开发 自动化构建工具
一.序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面. 所谓自动化构建是按照一定 ...
- gulp自动化构建工具
gulp 自动化构建工具,实时监控.代码合并.压缩... http://www.gulpjs.com.cn/ 中文网 http://gulpjs.com/plugins/ 英文网 ...
- 前端自动化构建工具gulp的使用总结
前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...
- 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍
前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...
- 项目管理及自动构建工具Maven
项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...
- 前端自动化构建工具——gulp
gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...
随机推荐
- JavaScript中的Array.prototype.slice.call()方法学习
JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...
- JS控制A标记的href跳转
var a = document.getElementById("aHref"); a.href = '/user'; //取消<a>标签原先的onclick事件,使& ...
- Python lib库docker-py和docker的区别
1)两者的安装方式 pip install docker A Python library for the Docker Engine API pip install docker-py A Pyth ...
- 正经学C#_变量与其数据类型:《c#入门经典》
这一篇总结以下变量与其数据类型. 变量:在c#中指 某一个值或者数据存储在变量中,并且可以取出或者查看.变量不仅仅是一种,也有很多种,细分而言就是类型.泛指就是变量.如果是要是使用变量就要 声明变量, ...
- Binder学习笔记(五)—— Parcel是怎么打包数据的?
前文中曾经遇到过Parcel,从命名上知道他负责数据打包.在checkService的请求/响应体系中,Parcel只打包了基本数据类型,如Int32.String16……后面还要用于打包抽象数据类型 ...
- ubuntu - 14.04,如何让从托盘消失的输入法图标再次显示出来?
ubuntu14.04,我也不知道怎么搞的,突然输入法图标就从托盘上消失了,这可真太不方便了,不知道自己当前是否正在使用输入法,怎么能让输入法图标再次显示在托盘上? 解决办法:确保你的“系统设置”中有 ...
- AngularJS(四)——ng-controller(控制器)
前言 上篇大概说了一下指令的应用格式以及创建自定义指令方法,本篇重点介绍一些ng-controller都有哪些小作用. 内容 通过修改控制器部分,修改显示界面. Demo <div ng-app ...
- Mole and Abandoned Mine
Mole and Abandoned Mine n点m条边的无向图,删除第i条边花费c[i],问1到n只有一条路径时所需要的最小花费? \(2\le n\le 15\) . 我又A掉了一道zzs的题啦 ...
- [ZJOI2009]狼和羊的故事 BZOJ1412
题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...
- springcloud系列六 整合security
一 Eureka注册中心认证: Eureka自带了一个管理界面,如果不加密,所有人都可以进行访问这个地址,这样安全问题就来了,所以需要对其进行加密认证: 那么该如何进行整合呢: 1 在注册中心模块添加 ...