Maven 学习笔记(三)

Maven生命周期

  在上次我们使用maven package 对项目进行打包。这里就是为其指定一个生命周期。生命周期是包含在一个项目构建中的一系列有序的阶段。Maven有许多不同的生命周期,比如验证(validation),测试(testing),或者发布(deployment),不同的生命周期在项目中意味着不同的事情。比如在上面我们使用了 maven package 如果你仔细观察的话会发现在这之前还做了其他的事情,比如编译(compile),测试(test)。所以在maven完成 package 的时候会执行它之前所有的阶段,直到指定的阶段执行完毕。

Maven坐标

  之前我们使用插件Archetype创建了一个maven项目,注意观察生成项目的pom文件这个里面包含了对这个项目的声明信息。当maven运行一个目标的时候,每个目标都会访问定义在项目POM里的信息。当运行不同的目标的时候会根据在pom中的定义来完成。在pom文件中我们会为项目定义一个唯一的标识名,也就是说提供了项目的一组唯一坐标,并且通过依赖 (dependencies) ,父 (parents) 和先决条件(prerequisite) 来定义和其它项目的关系,同时我们和可以为项目定义一系列的插件。

<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> <groupId>com.maven.demo01</groupId>
<artifactId>maven01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>maven01</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  groupId:

    一般为这个项目所在的公司的逆向域名(reverse domain name)开头。

  artifactId:

    在 groupId 下的表示一个单独项目的唯一标识符。

  version

    一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。

  packaging:

    项目的类型,默认是 jar ,描述了项目打包后的输出。类型为 jar 的项目产生一个JAR文件,类型为 war 的项目产生一个web应用。

  注意的是:一个项目的 groupId:artifactId:version 构成一个独一无二的项目,所以你不能同时有一个拥有同样的 groupId ,  artifactId 和 version 标识的项目。

Maven仓库(Repositories)

  当我们运行mavne的时候,你会注意到Maven从一个远程的Maven仓库下载了许多文文件。在一个maven项目中插件和项目的依赖都从远程仓库中下载出来的,当然如果你的网络不是很好的话,可以修改mavne的配置文件使其从国内的远程仓库中下载。

Maven依赖管理 (Dependency Management)

  在第二节的例子中我们创建了一个简单的mavne项目,使用了unit:junit:3.8.1,如果你仔细注意的话会发现你的pom文件中有专门处理dependencies,那里面包含了一个单独的依赖JUnit。当然对于一个复杂的项目来说它的依赖可远远不止这些的。maven有一个强大的地方就是支持依赖的传递,这个我们以后会提到。

  到这里我们可以自己手动的创建个maven的项目,并且了解一下上面提到的知识点!!!

上一篇:sql之left join、right join、inner join的区别


下一篇:OC基础--关键字@property 和 @synthesize