Maven的使用

来源:互联网 发布:linux内核移植 编辑:程序博客网 时间:2024/06/06 02:23

Maven工具的命令主要是mvn ,该命令的基本格式是:

mvn <plugin-prefix>:<goal> -D<属性名>=<属性值>...其中plugin-prefix是一个有效的插件前缀,goal就是该插件所包含的指定目标,-D用于为该目标指定属性,每次运行mvn 可通过多个-D选项指定多个属性。

还有种指定运行插件的方式:mvn <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>:<goal>

plugin-group-id 和plugin-artifact-id和 plugin-version 被称为maven坐标,可用于唯一地标识某个项目。

maven核心其实什么也没有,maven只是一个空的容器,只会解析一些xml,管理声明周期和插件。而maven的强大在于maven的插件,所以它的功能可以无限扩大。


创建项目使用 archetype 插件,使用mvn archetype:generate 命令 即可创建Maven项目,

使用此命令后会生成一个文件夹,该项目的根路径下包含一个 pom.xml  ,此文件被称为项目对象模型描述文件,Maven使用一种被称为项目对象模型的方式来管理项目。

POM(Poject  Object  Model)用于描述如下问题:项目类型,项目名称等,pom.xml是一种项目对象模型的描述文件。

pom.xml中的<groupId.../>,<artifactId.../>,<packaging.../>,<version.../>定义了该项目的唯一标识。

该文件还包括一个<dependencies.../>元素,该元素定义了一个单独的测试范围的依赖(通常是一些框架或jar包)。

在pom.xml文件所在路径输入如下指令:

 mvn complie  表示运行complie插件的默认目标,这会编译该项目。

 mvn exec:java -Dexec.mainClass="org.fkjava.mavenqs.App"  表示运行exec插件,即运行该项目。

一个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>org.fkjava</groupId>  <artifactId>mavenQs</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>mavenQs</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>
Maven的核心概念

Maven采用约定优于配置的原则,maven主要由一下几条原则:

源代码应位于/src/main/java路径下,资源文件应位于/src/main/resource路径下,测试代码应该位于 /src/test 路径下,编译生成的class应位于/target/classes 路径下,项目还会产生一个jar应位于/target路径下。

maven预定义了一个固定的生命周期,以及一组用于构件和装配软件的通用插件,若是开发者遵循这些约定,只需要将源代码放到正确的目录下,maven可以帮你处理剩余的事。
Maven的声明周期

进入pom.xml文件所在的路径,执行如下命令 mvn install 命令行显示maven不仅运行了install,而且运行了大量的插件,就是maven生命周期导致的。

生命周期就是指maven构建项目的过程中,包含很多个阶段,常见的是maven默认的声明周期。

maven的生命周期由多个阶段构成,各个阶段按照次序执行,开始阶段是为了保证项目的基本完整性,结束阶段是为了将项目发布到远程仓库。

实际上mvn 命令除了可以使用<plugin-prefix>:<goal>运行指定插件的目标外,还可以使用如下的命令格式:mvn  <phase1>  <phase2>...

上面命令告诉maven执行生命周期中的一个或多个阶段。 

maven包含三个基本的生命周期

clean  default  site 

clean 包含如下三个核心阶段:

1)pre-clean 在构建之前执行预清理

2)clean 执行清理

3)post-clean 最后清理

默认的生命周期包含了项目构件的核心成分,默认的生命周期包含以下核心阶段:

1)compile  编译项目

2)test   单元测试

3)package 项目打包

4)install 安装到本地仓库

5)deploy  部署到远程仓库

这五个阶段依次执行,当程序员使用mvn执行install命令时,先进行install之前的阶段。

插件和目标

Maven可以整合进Ant,使用maven来运行ant的生成文件。

出了可以使用maven官方的,或第三方提供的各种插件之外,开发者也可以开发自定义插件,通过自定义插件来完成任意任务。

当使用mvn运行maven生命周期的指定阶段时,各阶段的工作也是由插件实现的。插件也可以绑定到生命周期的各个阶段。每个阶段可能绑定了零个或多个目标。

maven的坐标

POM需要为项目提供一个唯一的标识符,这个标识符就是项目的坐标。

maven坐标由以下4个元素构成:

groupId : 该项目的开发者的域名。

artifactId : 指定项目名。

packaging:指定项目打包的类型。

version : 指定项目的版本。

比如上面的pom.xml文件中,  <project.../>根元素下的节点:

  <groupId>org.fkjava</groupId>  <artifactId>mavenQs</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>

maven坐标可以精确定位一个项目。

例如mavenQs项目中还有如下的配置片段:

  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies>
上面的配置文件定义了一个依赖关系,表示此项目依赖于junit 3.8.1,其中的groupId artifactId version 便是junit的坐标。
POM文件的元素,pom.xml还可能包含下列元素

<properties.../> :该元素定义全局属性

<dependencies.../>:该元素用于定义依赖关系

<scm.../>:指定该项目源代码的管理工具,如svn。

<reposiories.../>:该元素用于定义远程资源库的位置。






0 0
原创粉丝点击