前言
在深入了解Maven之前我们还是先看一下Maven的定义。Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
这里总结一下Maven的优点:
- Maven可以对项目依赖进行统一管理;
- Maven可以自动解决重复和冲突的依赖;
- Maven可以开发第三方插件,可以实现很多扩展能力;
- 推动项目标准化(包括项目结构和开发流程);
对于Maven学习,这里有几个重点是一定要有认知的,分别是:Maven配置文件(setting.xml和pom.xml)标签含义、Maven的生命周期、Maven的版本控制规则以及SNAPSHOT和RELASE版本区别、如何开发Maven插件、如何利用Maven实现工程脚手架、Maven仓库以及Maven依赖处理(自动和手动)等。
这里这次文章中我先讲一下Maven配置文件(setting.xml和pom.xml)标签含义,这也是Maven入门必须要知道的。
Maven配置文件(setting.xml)标签含义
首先我们应该知道Maven的setting文件是Maven的全局配置,而pom文件是项目配置。
- 对于Maven而言我们首先应该知道的我们的本地仓库在哪里(默认是~/.m2/repository),同时我可以通过<localRepository>标签进行配置
<localRepository>${user.home}/.m2/repository</localRepository>
- 然后我在使用的时候可能需要配置远程仓库或者私服,我们可以通过<repositories>标签进行配置,同时可以指定REALSE或者SNAPSHOT版本的依赖是否失效以及本地缓存策略(always:每次构建都检查远程仓库中该依赖jar包是否有更新;daily:每天检查一次 (默认策略);interval:XXX 指定检查时间间隔,单位为分钟;never 从不检查)
<repositories>
<repository>
<id>private-central</id>
<name>maven-central</name>
<url>http://xxxxxx/repository/maven-central/
</url>
<layout>default</layout>
<releases>
<updatePolicy>daily</updatePolicy>
<enabled>true</enabled>
</releases>
<snapshots>
<updatePolicy>daily</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
- 一般情况下私服需要用户名密码,我们可以这样配置(<servers>标签)
<servers>
<server>
<id>private-central</id>
<username>developer</username>
<password>1234567890xyz</password>
</server>
</servers>
- 当私服没有需要的依赖时我们可以直接通过<mirrors>标签配置镜像,例如如下的阿里镜像配置
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>private-central</mirrorOf>
</mirror>
- 当然我们也可以通过<pluginRepositories>标签配置插件的仓库
<pluginRepositories>
<pluginRepository>
<id>private-central</id>
<url>http://xxxxxx/repository/maven-central/</url>
<releases>
<updatePolicy>daily</updatePolicy>
<enabled>true</enabled>
</releases>
<snapshots>
<updatePolicy>daily</updatePolicy>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
- 同时如果我们在配置插件时希望不提供groupId,则可以在setting文件中通过<pluginGroups>标签配置即可
<pluginGroups>
<pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>
- 当然还有像<properties>、<activation>等标签也是需要知道的
Maven配置文件(pom.xml)标签含义
首先POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
然后pom文件我们可以将他分为这么几部分:
- 项目信息设置(包括最常见的坐标信息、父模块&其他备注信息)
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
- 构建过程的设置
<build>...</build>
<reporting>...</reporting>
3.项目信息设置
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
4.环境设置
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
后面还会介绍Maven的生命周期、Maven的版本控制规则以及SNAPSHOT和RELASE版本区别、如何开发Maven插件、如何利用Maven实现工程脚手架、Maven仓库以及Maven依赖处理(自动和手动)等重点内容~