对marven的初步认识

**

Maven的概念:

**

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。

**

Maven的特点

**

那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表所示:
在这里插入图片描述

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
**

maven的生命周期

**

Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。

clean(清理)

cleanup(清理所有)

此生命周期旨在给工程做清理工作,它主要包含以下阶段:

pre-clean - 执行项目清理前所需要的工作。

clean - 清理上一次build项目生成的文件。

post-clean - 执行完成项目清理所需的工作.

default(默认)

validate - 验证项目是否正确且所有必要的信息都可用。

initialize - 初始化构建工作,如:设置参数,创建目录等。

generate-sources - 为包含在编译范围内的代码生成源代码.

process-sources - 处理源代码, 如过滤值.

generate-resources -process-resources - 复制并处理资源文件,至目标目录,准备打包。

compile - 编译项目中的源代码.

process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强.

generate-test-sources - 为编译内容生成测试源代码.

process-test-sources - 处理测试源代码。

generate-test-resources -process-test-resources - 复制并处理资源文件,至目标测试目录。

test-compile - 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。

process-test-classes -test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package -package - 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test -integration-test - 按需求将发布包部署到运行环境。

post-integration-test -verify -install -将包安装到本地仓库,给其他本地引用提供依赖。

deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。

site(站点)

pre-site - 执行一些生成项目站点前的准备工作。

site - 生成项目站点的文档。

post-site - 执行需完成站点生成的工作,如站点部署的准备工作。

site-deploy - 向制定的web服务器部署站点生成文件。

**

maven的配置

**

Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
在这里插入图片描述

**

maven的安装

**

在安装 maven 前,先保证你安装了 JDK 。 JDK 6 可以从 Oracle 技术网上下载:
http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html。
Maven 官网的下载链接是 : http://maven.apache.org/download.html
该页的最后给出了安装指南。
安装完成后,在命令行运行下面的命令:
$ mvn -v
Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
Maven home: /home/limin/bin/maven3
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /home/limin/bin/jdk1.6.0_24/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “2.6.35-28-generic-pae”, arch: “i386”, family: “unix”

如果你看到类似上面的输出的话,就说明安装成功了。
接下来我们用 maven 来建立最著名的“Hello World!”程序 ?
注意:如果你是第一次运行 maven,你需要 Internet 连接,因为 maven 需要从网上下载需要的插件。
我们要做的第一步是建立一个 maven 项目。在 maven 中,我们是执行 maven 目标 (goal) 来做事情的。
maven 目标和 ant 的 target 差不多。在命令行中执行下面的命令来建立我们的 hello world 项目

~$mvn archetype:generate -DgroupId=com.mycompany.helloworld -DartifactId=helloworld -Dpackage=com.mycompany.helloworld -Dversion=1.0-SNAPSHOT
archetype:generate

目标会列出一系列的 archetype 让你选择。 Archetype 可以理解成项目的模型。 Maven 为我们提供了很多种的项目模型,包括从简单的 Swing 到复杂的 Web 应用。我们选择默认的 maven-archetype-quickstart ,是编号 #106 ,如下图所示:
在这里插入图片描述
连打两个回车,这时候让你确定项目属性的配置,

在这里插入图片描述
这些属性是我们在命令行中用 -D 选项指定的。该选项使用 -Dname=value 的格式。回车确认,就完成了项目的建立,如下图所示:

在这里插入图片描述
这时候我们看一下 maven 给我们建立的文件目录结构:

在这里插入图片描述
maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId 。在这个目录下面,有一个 Project Object Model(POM) 文件 pom.xml 。这个文件用于描述项目,配置插件和管理依赖关系。
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。 Maven 已经为我们建立了一个 App.java 文件: Java代码 package com.mycompany.helloworld;

/**  
 * Hello world!  
 *  
 */   
public class App {   

  
    public static void main( String[] args ) {   
        System.out.println( "Hello World!" );   
    }   
}  
 正是我们需要的 Hello World 代码。所以我们可以构建和运行这个程序了。用下面简单的命令构建: ~$cd helloworld~$mvn package 

当你第一次运行 maven 的时候,它会从网上的 maven 库 (repository) 下载需要的程序,存放在你电脑的本地库 (local repository) 中,所以这个时候你需要有 Internet 连接。Maven 默认的本地库是 ~/.m2/repository/ ,在 Windows 下是 %USER_HOME%.m2\repository\ 。

在这里插入图片描述
如果构建没有错误的话,就会得到类似下面的结果:

在这里插入图片描述
这个时候, 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.mycompany.helloworld.App

在这里插入图片描述
运行成功!!!

**

免责声明

**
本博客由作者学习使用,其中大量资源来源于其他楼主,保证不用于商业事务。在此宣布本博客最终解释权归属于博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值