【手把手教你Maven】构建过程

Maven是一款进行 依赖管理、项目构建、信息管理 为一体的工具。java

它不像Make具备复杂的命令、也不像Ant须要手动编写大量的重复代码就能进行项目的构建;apache

还能提供强大的依赖库管理,避免jar包混乱与冲突;windows

还能够方便的管理项目的信息、知识产权等内容。maven

本篇的写做目的在于帮助那些以前没有使用过,或者是对maven尚未太多概念的朋友,学会使用maven,利用maven进行项目的构建。工具

经过讲解Maven的下载、安装、编写、执行任务,快速体验Maven的工做模式与使用技巧...单元测试

下载

目前高版本的Eclipse已经集成了Maven,可是考虑到插件的稳定性,仍是推荐使用本身安装的Maven(须要在Eclipse中进行绑定)。学习

手动安装须要在官网下载Maven,目前最新的版本是3.3.9:http://maven.apache.org/download.cgi测试

通常windows下的用户下载这个zip就能够了,若是要学习源码,能够下载src那版的。ui

安装

1 首先须要安装JDK,在命令行中输入java -version验证版本:编码

2 而后解压下载好的压缩包:

3 配置环境变量

在“环境变量”中配置:

M2_HOME:xxxx/apache-maven-3.3.9 在path中添加:";%M2_HOME%/bin"

4 在命令行中输入 mvn -v测试

编写

若是使用过Ant都知道Ant是经过build.xml执行构建任务的,Maven中是经过pom.xml来执行任务。

POM,project object model,即项目对象模型,它经过这个pom.xml描述一个项目的构建以及信息。

<?<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xinoo.test</groupId>
    <artifactId>first-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>First Maven Project</name>
</project>

第一行指定了文档的XML版本和编码

第二行即每一个pom.xml的核心元素——project

project下面有几个子元素,这几个子元素通常是每一个项目都会使用到的:

1 modelVersion  这个元素指定了POM的版本,Maven2或者Maven3 都只能是4.0.0

2 groupId 是项目组的ID,通常是com.公司组织名.项目名

3 artifactId 是该项目在项目组中的ID,好比当前的项目是项目组的一个代理项目,就能够叫作myproxy

4 version 是项目的版本号,用于维护项目的升级和发布

5 name 通常没有实际的用处,只是用于标识该项目

比较重要的参数是 groupId、artifactId、version,这三个属性肯定惟一的一个项目。

执行任务

通常的Maven项目会包含这样一个目录树:

project |-src--main--java--你的源代码 | |--test----java--你的单元测试代码 |-target--编译出的文件和jar包 |-pom.xml--项目信息以及任务定义

所以咱们在上面的pom.xml同级目录中,建立

src/main/java/com/xingoo/test/firstmaven 文件夹

而后再该文件夹中建立HelloWorld.java

package com.xingoo.test.firstmaven; public class HelloWorld{ public String sayHello(){ return "Hello Maven"; } public static void main(String[] args){ System.out.println(new HelloWorld().sayHello()); } }

而后再pom.xml所在的目录中运行mvn clean compile命令:

会发现目录中多了一个target文件夹,文件夹中增长了两个文件夹:

其中classes中是java编译出的class文件、maven-status是依赖的compile插件。

参考

【1】最后的任务执行样例:百度云盘文件mvn1127.zip

【2】《Maven实战》:百度云盘文件Maven实战教程