maven是什么
maven是一个Java项目管理工具。maven提供了大量命令行工具,可以方便的管理java项目建立、开发、测试、打包、生成、部署等各个生命周期的操作,极大的方便开发者。同时,maven还提供了统一的项目结构,简化了项目的处理流程。
maven是一个Java项目的依赖管理工具。当项目中使用了多个第三方包的时候,传统的手工导入方式就不能胜任了。各种第三方包的依赖、冲突,都会导致项目编译错误。利用maven,可以一次性解决所有问题,让依赖管理变成配置文件的简单修改。
maven还是一个开放的插件平台。maven提供了大量插件,官方的和各个第三方包的。利用这些插件,可以更大程度上的简化项目开发的难度,解放开发者的生产力。
maven的安装
maven是基于java编写而成的,需要JRE或者JDK才能运行。所以首先需要正确安装JDK并配置好环境变量。安装和配置JDK可以参考我我的这篇文章Windows平台Java开发环境的搭建。
下载maven二进制包
对于Linux平台,安装mzven非常容易。利用各个发行版提供的包管理器,只需要一条命令就可以安装maven了。例如Debian和Ubuntu,输入以下命令:
$ sudo apt install maven
Fedora则需要输入:
$ sudo dnf install maven
ArchLinux需要输入:
$ sudo pacman -S maven
对于Windows平台,稍稍有些麻烦。首先到maven下载页面找到Binary zip archive这样的字样,然后点击右面的link即可下载。目前maven的版本是3.3.9。
下载完毕之后将其解压,放置到你想放置的位置。
配置环境变量
下载好maven之后,还需要配置环境变量。对于Linux,不需要配置环境变量,包管理器会自动帮你完成这些设置。Windows平台打开此电脑->属性->高级系统设置->环境变量
,然后添加一个M2_HOME
,值为你放置maven程序的位置。然后在PATH
变量中增加一个%M2_HOME%\bin
的值即可。需要注意多个值之间需要添加英文分号,不要搞错了。
配置好环境变量之后,就可以测试一下maven是否安装正确。输入以下命令,如果出现了maven版本号等信息,说明安装正确。否则需要重新检查是否下载了正确的maven包并配置正确环境变量。
$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\devtools\apache-maven
Java version: 1.8.0_72, vendor: Oracle Corporation
Java home: D:\Program Files\Java\jdk1.8.0\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
maven的配置
找到maven主目录,也就是M2_HOME
环境变量所对应的目录,然后进入conf文件夹,会发现有settings.xml和toolchain.xml两个配置文件。我们主要配置settings.xml文件。XML文件的编辑器我推荐使用sublime或者notepad++,或者Eclipse等IDE自带的XML编辑器也可以。Windows自带的记事本应用没有语法高亮等,编辑起来不太方便。
打开settings.xml文件,会发现其中有大量的注释,说明了每个片段的意义和用法。因此这里只简单说明一下。
节点名 | 意义 | 默认值 |
---|---|---|
localRepository | maven包的下载位置 | 用户主目录下的.m2/repository |
interactiveMode | 是否启用交互模式 | true |
offline | 在构建项目的时候是否应该离线 | false |
pluginGroups | 配置插件的搜索范围的,下面还有pluginGroup节点 | |
proxies | 指定maven下载包的时候可以使用的代理,如果有多个会使用第一个 | |
servers | 指定maven使用的服务器 | |
mirrors | 指定maven下载包使用的镜像服务器 | |
profiles | 指定maven使用的一个或多个配置文件 | |
activeProfiles | 指定对于所有项目构建的配置文件 |
下面是我的配置文件,去掉了注释。设置默认的项目构建版本为JDK8,并且在构建的时候同时下载依赖项的文档和源代码。本来用的是开源中国的镜像,但是好像很早以前开源中国的镜像就挂了。所以这里改成了阿里爸爸的了。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\devtools\m2_repo</localRepository>
<offline>false</offline>
<interactiveMode>true</interactiveMode>
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers></servers>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>jdk-1.8</activeProfile>
</activeProfiles>
</settings>