简介
Maven这个词翻译为『专家』或『内行』。
Maven是Apache组织中一个颇为成功的开源项目,主要服务于基于JAVA平台的项目构建,依赖管理和项目信息管理。
构建包括了编译,运行单元测试,生成文档, 打包,部署等工作。
构建
maven是一个强大的构建工具,从清理,编译,测试到生成报告,再到打包,部署。
Maven抽象了完整的构建生命周期模型。
maven是跨平台的,Windows, linux, mac上都可以使用同意的命令
Maven为全世界JAVA开发者提供了免费的中央仓库。
Maven安装
Mac上安装maven
可以直接用brew install maven
,
maven会自动安装到/usr/local/Cellar/Maven
中
安装完后执行mvn -v
可以查看版本和目录
安装目录
Maven home: /usr/local/Cellar/maven/3.5.2/libexec
有下面四个目录:
- bin
- boot
- conf
- lib
bin : 包含了mvn的运行脚本,这些脚本用来配置java命令, 准备好classpath和相关的java系统属性,然后执行java命令。
mvnDebug比mvn多了一条 MAVEN_DEBUG_OPTS
命令, 其作用在运行maven时开启debug, 以便调试maven本身。
该目录还包括 m2.conf , 这是 classworlds的配置文件。
boot : 包含 plexus-classworlds-2.5.2.jar 一个文件, plexus-classworlds是一个类加载器框架,Maven使用该框架加载自己的类库。
conf : maven的全局配置文件 setting.xml, 一般情况下,将该文件复制到 ~/.m2/ 目录下, 用户范围内配置。
lib : 包含了所有maven 运行时需要的java类库。
~/.m2
该文件夹下放置Maven本地仓库, ~/.m2/repository
还有配置文件 :setting.xml, 推荐用户范围内的setting.xml, 一方面避免影响到系统中的其他用户, 另一方面方便升级Maven。
设置http代理
如果公司基于安全因素考虑,要求使用代理访问网络。这种情况下就需要为maven设置代理。
编辑 ~/.m2/setting.xml
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
</proxies>
proxies 下可以有多个proxy, 如果有多个,默认第一个被激活的proxy会生效。
active 为true表示激活该代理。
nonProxyHosts指定不需要代理的主机名,| 分割多个, 支持通配符,*.google.com, 表示以google.com 结尾的域名都不代理。
编写POM文件
Maven项目的核心是pom.xml.
POM:Project Object Model 项目对象模型,定义了项目的基本信息。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.x.mvn</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
第一行是XML头, 指定了xml文档的版本和编码方式。
第二行是project元素, project是pom.xml的根元素,还声明了POM相关的命名空间和xsd元素,这些元素不是必须的,但使用这些属性能够第三方工具(IDE中XML编辑器)帮助我们快速编辑POM。
modelVersion指定当前POM模块的版本, 对于Maven2及Maven 3,只能是4.0.0.
groupId, artifactId, version定义了项目的基本坐标。
name为项目名称,不是必须的,为了方便信息交流。