![13c535b7bce20fe648960f879c912006.png](https://img-blog.csdnimg.cn/img_convert/13c535b7bce20fe648960f879c912006.png)
本文是以初学者角度记录学习JAVA过程,无指导之意,如有错误,请各位大神不吝指教。
希望能够通过文章编写监督自我上进,与初学者共勉!!!
在介绍 Maven安装与配置之前,我们应该先搞明白Maven是啥东西?Maven能为我们做什么?
1,概述
Maven是一个构建工具,服务与构建,使用Maven配置好项目后,输入简单的命令,如 :mvn clean install ,Maven会帮我们处理那些繁琐的工具。
Maven会帮我们标准化构建过程,所有的项目都是简单一致的
Maven是跨平台的,最大化的消除了构建的重复
总结:
Maven是一个构建工具,不仅能帮助我们自动化构建,还能抽象构建过程,提供构建任务实现
Maven还是一个依赖管理工具和项目信息管理工具,他提供了中央仓库,能够帮我们自动下载构建。
Maven的中央仓库 分为本地仓库和远程仓库,统一管理Jar包,有效解决多人开发项目时,Jar包的一致性。
Maven提供了帮助管理、构建、文档、报告、依赖、发布、scms、分发的方法,可方便的编译代码,进行依赖管理。
2,安装
下载地址
Maven - Download Apache Mavenmaven.apache.org需要准备环境
JDK
Intellij IDEA
Maven
选择最新版本安装文件
![b79158cf5dbc7c13262a725a8ef8035a.png](https://img-blog.csdnimg.cn/img_convert/b79158cf5dbc7c13262a725a8ef8035a.png)
将文件解压到D:Program FilesApachemaven目录下:
![4d041d0a37538d67cfa7d3665b0b4754.png](https://img-blog.csdnimg.cn/img_convert/4d041d0a37538d67cfa7d3665b0b4754.png)
新建环境变量MAVEN_HOME,赋值D:Program FilesApachemaven
![b3129f3a78a7fd0071cd65fcd0769474.png](https://img-blog.csdnimg.cn/img_convert/b3129f3a78a7fd0071cd65fcd0769474.png)
编辑环境变量Path,追加%MAVEN_HOME%bin;
![f1799853ba040e11e431b8d9e4a5fb51.png](https://img-blog.csdnimg.cn/img_convert/f1799853ba040e11e431b8d9e4a5fb51.png)
至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功:
![2c13da9d350e574ac0d8772a719249b3.png](https://img-blog.csdnimg.cn/img_convert/2c13da9d350e574ac0d8772a719249b3.png)
Maven安装参考:https://www.cnblogs.com/eagle6688/p/7838224.html
3,配置
本地仓库
1, 在D:Program FilesApache目录下新建maven-repository文件夹,该目录用作maven的本地库。
2,打开D:Program FilesApachemavenconfsettings.xml文件(Maven配置文件),查找下面这行代码:
<localRepository>/path/to/local/repo</localRepository>
localRepository节点默认是被注释掉的,需要把它移到注释之外,然后将localRepository节点的值改为我们在3.1中创建的目录D:Program FilesApachemaven-repository。
3, localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:Users用户名.m2。
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。
此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。
4,运行一下DOS命令
mvn help:system
如果前面的配置成功,那么D:Program FilesApachemaven-repository会出现一些文件。
远程仓库
在很多默认情况下,默认的中央仓库无法满足项目需求,可能项目需要的构建存在于另外一个远程仓库中,如JBosss的Maven仓库,配置如下:
<project>
...
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<replease>
<enabled>true</enabled>
</replease>
<snapshots>
<enabled>false</enabled>
</snapshots>
<layout>default</layout>
</repository>
</repositories>
...
</project>
在repositories元素下,可以使用repository子元素声明一个或者多个仓库
该例中声明了一个jd为jboss,名称为JBoss Repository的仓库
任何一个仓库声明的id必须是唯一的,尤其需要注意的是,Maven字段的中央仓库使用的id为central
如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置。该配置中的url值指向了仓库的地址,一般来说,该地址都基于http协议,Maven用户都可以在浏览器中打开仓库地址浏览构件。
该例配置中的releases和snapshots元素比较重要
他们用来控制Maven对于发布版构件和快照版构件的下载。这里需要注意的是enabled子元素,该例中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。因此,根据该配置,Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。该例中的layout元素值default表示仓库的布局是Maven2 及Maven 3的默认布局,而不是Maven 1的布局。
对于releases和snapshots来说,除了enabled,他们还包含另外两个子元素updatePolicy和checksumPolicy:
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never——从不检查更新;always——每次构建都检查更新;interval:X——每隔X分重检查一次更新(X为任意整数)。
元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息,其他可用的值包括:fail-Maven遇到校验和错误就让构建失败;ignore-使Maven完全忽略校验和错误。
远程仓库的认证
大部分远程仓库无需认证就可以访问,但有时候出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库。例如,组织内部有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名及密码。这时,为了能让Maven访问仓库内容,就需要配置认证信息。
配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中,这是因为POM往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只放在本机。因此,在settings.xml中配置认证信息更为安全。假设需要为一个id为my-proj的仓库配置认证信息,编辑settings.xml文件如下所示。
<settings>
...
<servers>
<server>
<id>my-proj</id>
<username>repo-user</username>
<password>repo-pwd</password>
</server>
</servers>
...
</settings>
Maven使用settings.xml文件中并不显而易见的servers元素及其子元素配置仓库认证信息。上面中该仓库的认证用户名为repo-user,认证密码为repo-pwd。这里的关键是id元素,settings.xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。换句话说,正是这个id将认证信息与仓库配置联系在了一起。
发布至远程仓库
私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其他团队成员使用
Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中。首先,需要编译项目的pom.xml文件。配置distributionManagement元素见下面。
<project>
...
<distributionManagement>
<repository>
<id>proj-releases</id>
<name>Proj Release Repository</name>
<url>http://192.168.1.100/content/repositories/proj-releases</url>
</repository>
<snapshotRepository>
<id>proj-snapshots</id>
<name>Proj Snapshot Repository</name>
<url>http://192.168.1.100/content/repositories/proj-snapshots</url>
</snapshotRepository>
</distributionManagement>
...
</project>
distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构建的仓库,后者表示快照版本的仓库。这两个元素下都需要配置id、name和url,id为该远程仓库的唯一标识,name是为了方便人阅读,关键的url表示该仓库的地址。
往远程仓库部署构件的时候,往往需要认证。需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论从远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。
配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。
远程配置参考:https://blog.csdn.net/en_joker/article/details/84024884
4,Intellij IDEA配置Maven
打开 Intellij IDEA>File>Setting 打开设置
![cd19f96e617b96e1e9d97b4a03f26928.png](https://img-blog.csdnimg.cn/img_convert/cd19f96e617b96e1e9d97b4a03f26928.png)
搜索maven 点击maven在右侧选择
![d2c1e0db69efa0e7cf6f0d786da05b0b.png](https://img-blog.csdnimg.cn/img_convert/d2c1e0db69efa0e7cf6f0d786da05b0b.png)
maven 选择
1、maven安装在电脑的目录。
2、maven安装目录conf文件夹下的settings.xml。
3、 maven的中心仓库,该仓库是2中settings.xml 中配置的。本地中心仓库
![799ff42fb901bf03b30616c5f32318fc.png](https://img-blog.csdnimg.cn/img_convert/799ff42fb901bf03b30616c5f32318fc.png)
点击 Maven home directory 后面的... 找到本地的maven即可。点击确认 配置完成。
![99dbf3e7095d948398cf20dceca6a75f.png](https://img-blog.csdnimg.cn/img_convert/99dbf3e7095d948398cf20dceca6a75f.png)
5,创建Maven项目
1、 新建project,选择maven项目,勾选“Create from archetype”,选择相应的jdk以及webapp,进行下一步。
![d5a536e559d52cde4e734f60de527dfe.png](https://img-blog.csdnimg.cn/img_convert/d5a536e559d52cde4e734f60de527dfe.png)
2、设置项目名称以及版本。这边需要填写组织名称、项目名称以及版本号,版本号可以默认。
![184471d6137fee96aa737716d6fa4c32.png](https://img-blog.csdnimg.cn/img_convert/184471d6137fee96aa737716d6fa4c32.png)
3、设置maven。这边一般不选择IDEA自带的maven,一般下载最新版的maven以及本地配置自己的仓库路径,最好是在maven中配置相应的阿里云镜像等。
![76b7d1fc5cffa43ccf45da355d4ccbcf.png](https://img-blog.csdnimg.cn/img_convert/76b7d1fc5cffa43ccf45da355d4ccbcf.png)
4、设置参数,加快jar包下载速度。
![e5b7dbdd40568f243d8e6844cf585681.png](https://img-blog.csdnimg.cn/img_convert/e5b7dbdd40568f243d8e6844cf585681.png)
如果没有配置这个参数,在maven生成骨架的时候将会非常慢,有时候直接卡住。archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了所以导致很慢,指定internal来表示仅使用内部元数据。
参考文章:https://blog.csdn.net/lxw983520/article/details/85686285
下一步,项目名称和项目位置信息,点击Finish完成
![93ff56603612c7339730836374cae9aa.png](https://img-blog.csdnimg.cn/img_convert/93ff56603612c7339730836374cae9aa.png)
6,运行项目
![bea19d15ed33fc6407249e9354eb416e.png](https://img-blog.csdnimg.cn/img_convert/bea19d15ed33fc6407249e9354eb416e.png)
配置本地Tomcat运行
项目新建成功后,需要配置容器运行项目。这边选择tomcat进行项目启动,本地需要下载相应的tomcat。
![9162a904b8089f4aca82761233b11d6d.png](https://img-blog.csdnimg.cn/img_convert/9162a904b8089f4aca82761233b11d6d.png)
![b8b933bfe942e7e3817f989533fd867e.png](https://img-blog.csdnimg.cn/img_convert/b8b933bfe942e7e3817f989533fd867e.png)
![9dca23e57ae71b1845f8e6b922e3f2fb.png](https://img-blog.csdnimg.cn/img_convert/9dca23e57ae71b1845f8e6b922e3f2fb.png)
配置启动环境。这边选择Artifacts,并且选择war exploded。
![9b2c31286b7108bcfabe8405e70e133e.png](https://img-blog.csdnimg.cn/img_convert/9b2c31286b7108bcfabe8405e70e133e.png)
完成配置,启动项目
![c371a521b5a36bd388a0bf64adacaffc.png](https://img-blog.csdnimg.cn/img_convert/c371a521b5a36bd388a0bf64adacaffc.png)
![6e001e479ae69790c7e92adaf6039990.png](https://img-blog.csdnimg.cn/img_convert/6e001e479ae69790c7e92adaf6039990.png)