一、什么是Maven
Apache Maven意为accumulator of knowledge,是一个软件项目管理和综合工具,可以方便的管理项目中所需的插件。
Maven的主要目标是让开发人员在最短的时间内理解开发工作的完整状态。为了实现这一目标,Maven试图处理以下几个方面的问题:
- 使构建过程变得简单
- 提供统一的构建系统
- 提供优质的项目信息
- 提供最佳实践开发指南
- 允许快速迁移到新功能
二、安装与配置
先确保安装了JDK。
不过我觉得能知道Maven的起码是用过java开发了,所以这个应该不是问题。
注:如果使用的IDE是Eclipse,新版本的已经内置m2eclipse了,可以不需要重复安装。
2.1 Windows安装
Maven下载链接:http://maven.apache.org/download.cgi
下载并解压。
如下图所示,打开环境变量,在Path中添加解压后的bin文件夹到环境变量中,例如我这里是D:\installation\Eclipse\apache-maven-3.6.1\bin\。注意目录中间不要有空格。
然后打开命令行(cmd),输入mvn -v。如果看到例如下面这样的内容,那么说明已经添加成功了。否则检查以下环境变量是否添加的有问题。
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T21:00:29+02:00)
Maven home: /opt/apache-maven-3.6.1
Java version: 1.8.0_45, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “mac os x”, version: “10.8.5”, arch: “x86_64”, family: “mac”
2.2 Linux安装
略,见官网教程:http://maven.apache.org/install.html
2.3 一般配置
打开解压的目录的配置xml,我这里是apache-maven-3.6.1\conf\settings.xml
2.3.1 Maven本地资源库
就是maven下的插件放在哪。不配置默认的默认目录为:
- Unix/Mac OS X – ~/.m2
- Windows – C:\Documents and Settings{your-username}.m2
可以随便修改一个目录,改成你想放的目录,例如我这里是
<localRepository>D:\installation\Eclipse\maven_repo</localRepository>
现在都配置文件里面自带注释和配置示例。
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
2.3.2 中央仓库和镜像仓库
Maven 中央存储库是 Maven 用来下载所有项目的依赖库的默认位置。maven找插件时,会先从本地资源库找,如果没有下载过,那么默认从中央仓库下载。但是可以考虑从位于国内都镜像仓库下载,会快一点。如果在公司内网使用且公司有自己的镜像仓库,配置成自己公司的最快。
下面是阿里云都镜像仓库。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2.3.2.1 全局配置
上面这段内容复制到conf\settings.xml的下面的中间就可以了,其它内容是配置文件里面的注释和配置示例。
<!-- mirrors
| This is a list of mirrors to be used in downloading artifacts from remote repositories.
|
| It works like this: a POM may declare a repository to use in resolving certain artifacts.
| However, this repository may have problems with heavy traffic at times, so people have mirrored
| it to several places.
|
| That repository definition will have a unique id, so we can create a mirror reference for that
| repository, to be used as an alternate download site. The mirror site will be the preferred
| server for that repository.
|-->
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
注:< mirrorOf>可以设置为哪个中央仓库做镜像,为名为“central”的中央仓库做镜像,写作< mirrorOf>central< /mirrorOf>;为所有中央仓库做镜像,写作< mirrorOf>< /mirrorOf>。Maven默认中央仓库的id 为 central。id是唯一的。
重要:除非你有把握,否则不建议使用< mirrorOf>< /mirrorOf>的方式。
2.3.2.2 单项目配置
单项目配置时,需要修改pom文件。pom文件中,没有mirror元素。在pom文件中,通过覆盖默认的中央仓库的配置,实现中央仓库地址的变更。
修改项目的pom文件:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>conifg</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<!-- 是否开启发布版构件下载 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启快照版构件下载 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
2.4 Eclipse配置
2.4.1 m2eclipse
现在新版本都Eclipse其实已经内置集成了Maven,是自带的m2eclipse插件。
2.4.2 apache maven
使用刚刚安装的maven插件的话,可以在windows-preferences-maven-installations中添加刚刚下的maven目录,并勾选为使用这个刚刚下的而不是内嵌的(embedded)。
然后重启一遍Eclipse,避免一些乱七八糟的意料之外的问题。
2.5 其它IDE配置
没配过。。。
三、Hello world
现在可以建立一个maven工程试试了。
一路下一步就可以了。
hello world就默认的quickstart项目就行。实际项目使用时,可以看下是什么类型的,然后具体研究下选哪个。
Group Id和Artifact Id共同构成你的项目名称,加起来表示唯一标识。然后finish就可以了。第一次可能会下个东西。如果这步之后出现异常提示,说明之前某个地方配置有问题,重新检查一下。
此时就新建好了一个项目
然后打开pom.xml文件,在里面添加各种maven的库就好了。
例如我们在mvn的仓库中(https://mvnrepository.com/artifact/com.google.guava/guava/28.0-jre) 可以搜索到guava的maven配置是
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.0-jre</version>
</dependency>
那么复制到pom.xml中保存,就会自动下载到你配置的本地资源库中,并在项目中生成一个Maven Dependencies。然后就可以使用了
效果和复制位置如下图所示:
编译打包见下一篇 eclipse maven 简单使用