Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,全部的项目配置信息都被定义在一个叫作POM.xml的文件中..
Maven是一款跨平台的项目管理工具,是一个开源的项目...html
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理...java
POM怎么理解呢???web
在没有使用Maven以前,咱们的jar包是否是很是杂乱???看一下我存放jar包的地方apache
在没有学习Maven以前,我还想过把这些jar包一一整理出来,万一硬盘坏了,那个人jar包又要去从新找了..并且因为jar包版本的问题,已经吃过很多亏...这就须要大量时间去整理jar包了...编程
曾经想手动打jar包,结果Intellij idea好像不太支持这种功能??【我还没找到】....因而只能依靠原生的jar 命令去打jar包了,过了一阵子,想从新打jar包的时候,又忘记命令了...很是苦恼...浏览器
而咱们的Maven就很是好地解决了上面这两种状况了,固然了,Maven的功能并非只有这么一丢丢,我只是举了两个小例子而已...随着咱们的学习,你将会看到Maven的强大之处...缓存
Maven能够管理项目的整个声明周期,包括清除、编译,测试,报告、打包、部署等等。tomcat
自动构建项目服务器
构建步骤:微信
Maven拥有“约定优于配置“这么一个理念,也就是说,把一些规范约定下来,人们就这么用!若是咱们事先约定好全部项目的目录结构,标准开发过程(编译,测试) , 全部人都遵循这个约定。软件项目的管理就会变得简单不少。好比:如何过马路(红灯停绿灯行),如何开门,关门等。
去官网下载Maven软件,解压事后就算安装完毕了...
由于Maven是由Java编写的,所以想要使用Maven,首先要配置Java的环境变量...
检测安装Maven是否成功,在控制台上打上 mvn -version就好了...
在咱们Maven中,有本地仓库这么一个概念,咱们能够在settings.xml配置文件中修改本地仓库的位置,好比我把本地仓库放到桌面上
详情可参照详细的Maven教程---Idea环境下
值得追加的是:在修改web.xml路径的时候,那篇博文并无给出绝对的路径...这里可能有些人不知道怎么写。我给出来参考
X:\Users\ozc\Desktop\zhongfucheng3\src\main\webapp\WEB-INF\web.xml
在咱们上一篇中已经知道了在Intellij idea下是如何使用Maven的了,建立出来的目录结构是这样子的:
上面的目录结构就是Maven所谓的”约定“,咱们使用Maven来构建Java项目,都是这种目录结构的...
接下来咱们来了解一下Mavaen一些经常使用的术语
本地仓库
中心仓库:
apache-maven-3.2.1libmaven-model-builder-3.2.1orgapachemavenmodel下的POM.xml文件中已经配置好了
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
私有服务器
软件的生命周期就是如下
- 清除--> 编译-->测试-->报告-->打包(jarwar)-->安装-->部署
当咱们使用idea环境下开发,maven生命周期的插件就很是清晰了...
坐标的组成: groupId + artifactId+ version
pom.xml介绍 :project object model 项目对象模型 ,它是maven核心配置文件
当咱们把上面的术语了解完之后,对下面pom.xml配置文件就不会感到陌生了。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>zhongfucheng3</groupId> <artifactId>zhongfucheng3</artifactId> <version>1.0-SNAPSHOT</version> </project>
若是咱们想要咱们的项目可以有Junit测试的开发包,咱们只要指定对应的jar包依赖就好了..
scope应用范围有test、compile等等,默认是compile,那么test和compile有什么区别呢?
<scope>test</scope>
前面已经说过了,咱们使用Maven的使用,若是须要导入相对应的jar包,Maven首先会在咱们的本地仓库中寻找--->私有仓库--->中心仓库...
然而,咱们的本地仓库经常没有想要的jar包的,而常常去中心仓库下载这就很是浪费时间和资源了...所以咱们通常都有一个私有仓库...
另外有些公司都不提供外网给项目组人员,所以就不能使用maven访问远程的仓库地址,因此颇有必要在局域网里找一台有外网权限的机器,搭建nexus私服,而后开发人员连到这台私服上,这样的话就能够经过这台搭建了nexus私服的电脑访问maven的远程仓库
咱们使用的是nexus框架来搭建私服,它属于sonatype 机构的开源框架,用该框架架设maven 私有服务器
Nexus环境搭建
tomcat会自动解析war包,而后就自动下载插件...
访问该项目,进到首页
登录...
每一个仓库的做用:
仓库组是一个虚拟的概念,就是经过对实体仓库(proxy、hosted)进行聚合, 对外暴露一个统一的地址这里要注意的是,放到左边的仓库,才是会被聚合的仓库
仓库组的配置顺序:
直接经过网站上传,把桌面上的pig-0.12.1.jar上传到私有服务器中
再次查看的时候,已经上传上去了
在pom.xml文件配置私服的路径、组id、版本等等
<!-- 假如没有私服 ,则 本地仓库找不到,则访问中心仓库 假若有私服 :访问顺序 首先访问本地仓库 本地仓库没有,则访问私服仓库 私服仓库也没有,则访问中心仓库 --> <!-- 加载的是 第三方项目使用的jar包 --> <repositories> <repository> <snapshots> <enabled>true</enabled> </snapshots> <id>public</id> <name>public</name> <url>http://localhost:8080/nexus-2.6.2/content/groups/public/</url> </repository> </repositories> <!-- 加载的是maven生命周期插件的jar包 --> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>public</id> <name>public</name> <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url> </pluginRepository> </pluginRepositories>
在本地仓库中也把私服的jar包下载下来了
server的配置能够在Maven的settings.xml中写上
<!-- 分销管理 ,把jar包发布到私服中 --> <!-- 配置服务器--> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
值得注意的是:你得留意你用的是哪一个Maven,是你本身下载的Maven仍是使用Idea集成的Maven,若是没有配置的话,那么就会出现401错误。
<distributionManagement> <!-- 发布到 快照版本的仓库,即 测试版本仓库 --> <snapshotRepository> <id>snapshots</id> <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url> </snapshotRepository> <!-- 发布到 发行版本的仓库中,也能够发布到3rd party 仓库 --> <repository> <id>releases</id> <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url> </repository>
再次查看仓库组
若是文章有错的地方欢迎指正,你们互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同窗,能够 关注微信公众号:Java3y