Maven简介

来源:互联网 发布:七天网络组织代码 编辑:程序博客网 时间:2024/05/12 04:54

Maven

Maven是一个项目管理和构建自动化工具,它采用一种“约定优于配置(Convention Over Configuration)”的策略来管理项目。Maven可以把源代码构建成可发布的项目(编译,打包,测试,发布)。
Maven的安装过程参考:http://blog.csdn.net/kenhins/article/details/13298015
安装好后,我们首先看下mvn的命令格式:
mvn <plugin-prefix>:<goal> -D<属性名>=<属性值> ...

1. 创建项目需要的插件archetype

比如我们用mvn archetype:generate -DinteractiveMode=false -DgroupId=com.blue.sky -DartifactId=Hello -Dpackage=dream
来创建项目的大体结构

2. POM(Project Object Model)

Maven使用项目对象模型的方式来管理项目,在pom.xml文件中包含了关于构建项目的各种配置细节信息,比如groupIdartifactIdpackaging,version定义项目的唯一标识,这个唯一标识被称为坐标,每一个Jar包都必须明确定义自己的坐标

<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.blue.sky</groupId>  <artifactId>Hello</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>Hello</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>

3. Convention

Maven的主要约定如下:
这里写图片描述
还有编译好的classes会放在${basedir}/target/classes目录中, 生成的Jar包会放在${basedir}/target目录下

4. Maven的生命周期

Maven生命周期中的元素被称为phase阶段,生命周期由多个阶段组成,Maven生命周期中的各阶段总是按顺序依次执行。
Maven包含三个基本的生命周期

  • clean生命周期
clean生命周期包含如下三个核心阶段pre-cleancleanpost-clean
  • default生命周期
默认生命周期的核心阶段compile test    package  项目打包install 安装到本地仓库deploy  部署到远程仓库
  • site生命周期
site包括如下核心阶段pre-sitesitepost-sitesite-deploy

4. 插件和目标

每个插件可以包括多个可执行的目标,当mvn运行Maven生命周期的指定阶段时,各阶段所完成的工作其实都是由插件实现的。插件目标可以绑定到生命周期的各阶段上,每个阶段可能绑定零个或多个目标。

5. 依赖管理

Maven依赖管理具有传递性,如果配置文件设置了项目依赖于a.jar,而a.jar又依赖于b.jar,那么项目无须显示声明依赖于b.jar,Maven会自动管理这种依赖的传递。

dependency元素可以接受如下子元素1. groupId 2. artifactId3. version4. type 默认值是jar5. classifier JDK的版本6. exclusions7. scope 依赖库起作用的范围          compile       默认的范围,编译,测试,打包时          provided      容器会在runtime时提供          runtime       编译时不需要,测试和运行时需要          test          只用于测试阶段
0 0
原创粉丝点击