Maven 学习笔记(1)入门篇

1. Maven的简介


1.1 Maven 是什么?


Maven是一个跨平台的项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。


1.2 约定优于配置

|------------目录-------------|--------------目的-------------|
|${basedir}                   |存放pom.xml和所有的子目录      |
|${basedir}/src/main/java     |项目的 java源代码              |
|${basedir}/src/main/resources|项目的资源,比如说 property文件|
|${basedir}/src/test/java     |项目的测试类,比如说 JUnit代码 |
|${basedir}/src/test/resources|测试使用的资源                 |


一个 Maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。


1.3 Maven 的优点

(1)对第三方依赖库进行统一的版本管理
只要用了 Maven 就不用再为每个项目复制jar了,Maven 会在你需要的时候,自动把这些第三方依赖库找到,你需要编译,Maven 就把这些jar包放到classpath里,你需要打包,Maven 就帮你把需要的jar包都复制到WEB-INF/lib/目录下。
(2)统一项目的目录结构
可以保证所有项目的目录结构都是一样的,每个目录起什么作用都很清楚明了。
(3)统一软件构建阶段
Maven 把软件开发的过程划分成了几个经典阶段,比如你先要生成一些java代码,再把这些代码复制到特定位置,然后编译代码,复制需要放到 classpat 下的资源,再进行单元测试,单元测试都通过了才能进行打包,发布。
以前使用Ant,最令人头疼的就是要为不同的项目写很多build.xml脚本,而且这些脚本还不太通用,现在我们可以使用 Maven 提供的这些经典构建阶段,让每个项目就经过相同的步骤,从源代码一步一步变成可以部署的成品。如果想要什么附加功能,把对应的插件绑定到一个构建阶段上,那么到了执行这个构建阶段的时候,就会执行绑定的插件了。
(4)测试驱动开发
测试是maven生命周期的最重要组成部分之一,并且Maven有现成的成熟插件支持业界流行的测试框架,如Junit和TestNG。
(5)快速构建
只需要一些配置,之后用一条简单的命令就能让Maven帮你清理、编译、测试、打包、部署,然后得到最终产品。

2. Maven 的安装与配置

在安装 maven 前,先保证你安装了JDK。

2.1 Maven 下载

Maven官方下载地址:http://maven.apache.org/download.html
当前最新版本:Maven 3.2.2


2.2 安装

(1)Windows平台
a. 解压发布包(apache-maven-3.2.2-bin.zip),假定为D:\apache-maven-3.2.2。
b. 添加M2_HOME的环境变量,设置变量的值为D:\apache-maven-3.2.2。
c. 更新Path的环境变量,追加 %M2_HOME%\bin; 到Path的变量值上。
d. 可选,添加MAVEN_OPTS的环境变量,设置变量的值为:-Xms256m -Xmx512m.

(2)在Linux平台安装
a. 解压安装

tar -xzvf apache-maven-3.2.2-bin.tar.gz -C /var/lib

b. 设置环境变量

打开/etc/profile,在文件最后添加
#set maven environment
M2_HOME=/var/lib/apache-maven-3.2.2
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$M2_HOME/bin:$PATH
c. 要使配置生效
source /etc/profile

可参考http://maven.apache.org/download.html

2.3 检测安装是否成功

执行命令:mvn –version


2.4 配置maven本地仓库的路径

本地仓库默认是在${user.home}/.m2/repository目录下,可通过修改%M2_HOME%\conf\setting.xml进行更改。
打开%M2_HOME%\conf\setting.xml文件,在<settings>标签下添加,<localRepository>/path/to/local/repo</localRepository>


3. 用Maven 命令创建一个简单的Maven项目

3.1 构建一个简单Maven项目

mvn archetype:generate -DgroupId=com.zing.helloworld -DartifactId=helloworld -Dpackage=com.zing.helloworld -Dversion=1.0-SNAPSHOT -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart

即可在当前目录创建一个简单的maven项目,当你第一次运行 maven 的时候,它会从网上的 maven 库 (repository) 下载需要的程序,存放在你电脑的本地库 (local repository) 中,所以这个时候你需要有 Internet 连接。

maven的大致结构如下:
helloworld  
|-- pom.xml  
`-- src  
    |-- main  
    |   |-- java  
    |   |   `-- com  
    |   |       `-- zing  
    |   |           `-- app  
    |   |               `-- App.java  
    |   `-- resources  
    |       `-- META-INF  
    |           `-- application.properties  
    `-- test  
        `-- java  
            `-- com  
                `-- zing  
                    `-- app  
                        `-- AppTest.java 

maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId 。在这个目录下面,有一个 Project Object Model(POM) 文件 pom.xml 。这个文件用于描述项目,配置插件和管理依赖关系。
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。

3.2 查看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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zing.helloworld</groupId>
  <artifactId>helloworld</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>helloworld</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

groupId, artifactId 和 version 这三个元素定义了一个项目基本的座标。
 
groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
artifactId 定义了当前Maven项目在组织中唯一的ID, 可以理解为项目中的模块, 模块为Maven中最小单位构件。
version 项目的版本。

3.3 构建和运行程序

cd helloworld
mvn package

这个时候, maven 在 helloworld 下面建立了一个新的目录 target/ ,构建打包后的 jar 文件 helloworld-1.0-SNAPSHOT.jar 就存放在这个目录下。编译后的 class 文件放在 target/classes/ 目录下面,测试 class 文件放在 target/test-classes/ 目录下面。

为了验证我们的程序能运行,执行下面的命令:

java -cp target/helloworld-1.0-SNAPSHOT.jar com.zing.helloworld.App

运行成功!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章