Maven是Apache组织的一个比较好用的开源项目,它是一个跨平台的项目管理工具,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。可以说不论多小多大的项目,使用Maven都非常的方便。
为什么要用Maven?
在开发过程中,不可避免的构建是每天都要做的工作,编写源代码除外的很大一部分时间都用来做编译、测试、打包、部署等工作,很繁琐。如果有一个工具代替你来做,是不是很方便?所以使用Maven就是来帮助你构建的。只需要mvnclean install一条简单命令,就能处理繁琐的任务。而且它有一个非常棒的地方,就是提供中央仓库,能够帮助我们自动下载组件。
通过坐标就能帮你管理每一个需要的构件(artifact)。而且唯一定位该构件。
Maven的一大作用就是消除重复。
还有一个值得注意的点,就是IDE中有自带的Maven,一般不用,因为它的版本往往是不稳定的新版,特别容易出错。
Maven安装
废话不多说,Maven安装使用,它的下载顺序是这样的,本地仓库-->私服-->中央仓库。
准备:JDK、eclipse、Maven;提前安装好JDK和eclipse
下载Maven: http://maven.apache.org/
下载apache-maven-3.5.0-bin.zip进行安装,Maven源码可以看apache-maven-src.zip
一、本地安装
安装很简单,解压缩zip文件到D盘中,例如D:\apache-maven,或者用命令行:D:\>jarxvf"D:\Download\apache-maven-bin.zip"。
二、配置环境变量
资源管理器中我的电脑右键-->属性,高级系统设置-->环境变量,在系统变量中新建一个变量名为MAVEN_HOME,然后把Maven安装路径D:\apache-maven放进去,确定。同时找到变量名为Path的变量,在变量值的末尾加上%MAVEN_HOME%bin;注意用分号“;”隔开。
三、验证
检查maven是否安装成功,在命令提示符(cmd)输入mvn -v,如果出现了如图所示,就是成功了。
如果想升级Maven,非常简单,只要把新的Maven解压缩到原安装地址,并且修改环境变量就行。
以上是在Windows环境中安装,还有可以在Linux中试试怎么安装,也挺简单的,下载安装配置环境变量都和上面差不多,这里不再赘述。
Maven使用
安装目录分析:
在使用前,先来了解一下你安装的Maven都有神马,就是在D盘下的文件。
bin:mvn运行脚本,包括前面用到的mvn -v命令所使用的mvn.bat的bat脚本。
boot:只包含plexus-classworlds-2.5.1.jar一个文件,他是一个类加载器框架,相对于默认的java类加载器。
conf:有一个settings.xml,修改它能够全局的定制Maven行为,一般我们都是放在~/m2/user/repository/settings.xml,来定制用户范围内的Maven行为,也就是每启动一个项目就要重新配置一次maven。
lib:Maven运行时需要的java类库,例如mave-core-3.0.jar、maven-model-3.0.jar等,还有一些第三方依赖,这是Maven的核心文件夹。
LICENSE.txt:Maven内置的软件许可证;
NOTICE.txt:Maven包含的第三方软件;
README.txt:Maven简介等;
POM文件
pom.xml是Maven的核心,定义了项目的基本信息,用于描述项目如何构建,生命项目依赖。
代码第一行是XML头,指定了该xml文件的版本和编码方式,project元素,是pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,这些属性不是必须的,但使用这些属性能够让第三方工具,如IDE,帮助快速编辑POM。
Pom.xml结构如下
<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>
<parent>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>0.0.2-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<artifactId>kids-web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>hello-world</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
这些元素都是什么意思?
<modelVersion>:POM模型版本
<parent>:父
<groupId>:所在的实际项目
<artifactId>:构件的名称
<version>:构件的版本
<dependencies>:依赖集
<packaging>:打包方式
<dependency>:依赖,每一个依赖只需要三个元素就能唯一定位。
主代码:
package com.company.helloworld;
public class HelloWorld
{
public String sayHello()
{
return "Hello Maven";
}
public static void main(String[] args)
{
System.out.print(new HelloWorld().sayHello());
}
}
使用Maven进行编译,在项目根目录下运行命令mvn clean compile,最后输出的结果信息为BUILD SUCCESSFUL。
解释一下这个mvn命令,clean是告诉Maven清理输出目录target/,compile是编译项目主代码。
至此,Maven在没有任何额外的配置的情况下执行了项目的气你和编译任务。