您的位置:首页 > 其它

Maven构建项目

2018-01-26 12:11 295 查看
Apache Maven是一个软件项目管理工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息中管理项目的构建、报告和文档。

案例环境

jdk 1.8.0_152

apache-maven-3.5.2

windows10家庭版

IDEA2017.3.3

部署Maven

下载Maven,官网下载地址:http://maven.apache.org/download.cgi



下载后直接解压即可。个人习惯创建一层上级目录,然后同级多创建一个repository目录用于本地仓库。

apache-maven

|_apache-maven-3.5.2(解压后目录)

|_repository(本地仓库)

配置maven系统环境变量。这步之前请先确认已经正确安装配置了JDK。如下图所示,主要是在系统变量中增加M2_HOME变量,值是apache-maven-3.5.2程序解压目录。最后,在系统环境变量path的值中增加“%M2_HOME%\bin”。



检查maven是否正常部署,cmd控制台首先路径切换到maven程序目录的bin目录,然后执行mvn -version(或者简写mvn -v),看到如下图所示代表已部署完成,如果不对请仔细检查环境变量是否配置正确,变量名对不对?path加值了吗?路径少 \ 了吧?



最后,指定本地库目录,即第二步中创建的repository目录。打开apache-maven-3.5.2\conf\settings.xml文件,找到标签localRepository,如下所示配置,未来maven从中央库下载jar包就会到该路径下。



创建maven工程

PS:我是IDEA用户,本来只想体验一下,结果直接抛弃了用了近十年的eclipse。

创建maven project,选择File-new-project进入New Project界面,本案例以web工程举例,如下图所示。



如果没有发现上图的maven选项可能是缺少maven插件,如下图所示,安装maven插件。



Next,配置GroupId、ArtifactId属性。

GroupId:按照jar包命名规则定义,是打包时生成文件的路径依据, 例如定义为com.company,则该项目的jar包将生成在本地路径:/com/company。

ArtifactId:项目唯一标识,一个GroupId下面可能多个项目。

Next,配置maven home目录,如下图所示。



User settings file可以不更改,只要Maven home directory更改了就会默认使用Maven home路径下的settings.xml文件,如上图所示Local repository已经更改为之前在settings.xml中配置的本地库目录。

Next,默认值即可,直接Finish完成maven web project创建。如下图所示,工程目录自动生成了资源目录resource和应用目录webapp,并在webapp下默认产生了一个“Hello word!”页面。maven project最重要的是pom.xml配置文件,接下来我们主要介绍下这个文件的配置。



特别提醒:图中右下角是更新pom.xml文件后浮现的对maven project更新的操作界面,建议不要使用auto-import,每次更新pom.xml文件后都手动点击下Import Changes,原因可以体会一下它的讨厌!

打开View-Tool Windows-Maven Projects,通过这里可以更新和管理Maven project。

如下图所示,maven projects视图中dependencies中展示了pom.xml中对应的配置。当pom.xml中配置信息显示红色字体时代表本地仓库中不存在,可以通过import changes操作从中央库更新到本地仓库;当maven projects视图中显示红色波浪底线时代表本地仓库中不存在jar包,可能是从中央库更新失败,可以修改pom.xml文件重新improt changes,如果还提示不存在那么就需要通过mvn命令安装jar包到本地仓库,这里先提一下,下一章详细介绍各种异常处理方式。



Maven projects视图中maven settings(齿轮图标)相当于打开File-Settings-Build,Execution,Delpoyment-Maven配置,如下图所示。如果是新建的maven project,那么在创建步骤中已经指定了本地部署的apache-maven;如果是open的已有项目,那么可以在这里去配置本地部署的apache-maven。为什么不用IDEA自带的Bundled?自己可以下载最新版本,可以使用mvn命令,方便维护。



pom.xml配置



从上至下介绍:

maven.compoiler.source/target 指定工程编译jdk版本。不指定,每次pom.xml更新后工程就被设置为jdk1.5编译。

基本信息

groupId 项目生成jar路径。

artifactId 项目唯一标识。

packaging 打包类型,如jar/war等等。

version 项目版本。

name 项目名称。

url 项目地址。

url 项目地址。

依赖关系

groupId 依赖项分组标识。

artifactId 依赖项唯一标识。

version 依赖项版本号。

构建配置

finalName 产生构建的文件名。

小集锦

为什么pom.xml增加依赖项出现红色字体?

一般出现红色字体就是依赖项在本地仓库中不存在,可以按照grouId在本地仓库中进行确认,如果确实不存在就从中央库更新或从本地使用mvn命令安装,如果已经存在那么检查下开发工具maven插件配置是否使用的本地部署的maven或者使用正确的settings.xml配置。

为什么maven projects视图中出现红色波浪线?

一般出现这个提醒,代表本地仓库中缺少这个jar包,可以按照pom.xml配置的grouId在本地仓库中进行确认。造成这种情况的原因可能是从中央库下载失败,可以重新下载或者更换下载镜像地址(后面有介绍),还可以使用mvn命令安装本地jar包。

更换中央库下载镜像地址

在本地部署的apache-maven目录conf/settings.xml中配置标签mirror。

<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<name>internal nexus repository</name>
<url>http://repo.maven.apache.org/maven2</url>
</mirror>


为什么我从其他项目复制过来的pom.xml配置依赖项全部下载失败?

有时候我们新建一个项目或者迁移一个项目,我们直接复制pom.xml文件或者内容来生成依赖项,但是很快发现maven projects视图下依赖项目一片飘红,再去本地仓库查看发现都没有jar文件,原因是你的pom.xml中依赖项存在中央库里没有的依赖项,需要单独进行手动执行mvn命令下载,所以个人建议在pom.xml文件编写过程中,将此类依赖项单独列在一起,需要以上操作时先注释掉中央库中不存在的依赖项执行完更新后,再手动安装剩余依赖项。

查询pom.xml中配置依赖项的值

网站:http://search.maven.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息