maven简介

一、是什么

 总的说来,Maven是一个jar包管理的工具。只是在Maven当中换了一个词汇。在Maven工程当中,我们所说的一个项目的Dependency其实就是指这个项目所依赖的jar包。这些jar包都是由外面的library库进行集中管理的。

 

二、为什么

  我们要建立一个这样的library仓库的原因是:因为很多工程可能会用到相同的jar包,这样的话,很多工程在Jar包部分就会有很多公共部分。而我们面向对象的思想中就有:将公共部分抽取出来。这样的话,就能节省非常多的资源。

  而且,现在很多的开源框架都是用Maven去管理自己的Jar包。如Spring,在官网上,我们再也找不到纯粹的下载jar包的栏目,它给出的仅是一些<dependencies>的片段。其下,每个标签<dependency>就是一个jar包。

 

三、怎么用

  1、我们将官网上的<dependencies>片段拷贝到一个pom.xml文件当中。

<?xml version="1.0" encoding="UTF-8"?>
<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.springframework</groupId>
<artifactId>gs-maven</artifactId>
<packaging>jar</packaging>
<version>0.1.0</version>

<dependencies></dependencies>
</project>

这个pom.xml文件包含以下详细的工程配置:
·<modelVersion> POM模型的版本号(总是为4.0.0)
·<groupId> 这个工程所属的组织或者机构。常常以域名的形式呈现。
·<artifactedId> 这个工程打成jar包或war包的名字
·<version> 这个工程的版本号
·<packaging> 指定工程以怎样的方式进行打包。默认为jar。


2、我们将上面的pom.xml文件放到一个maven项目的根目录下。

Maven工程要满足一定的目录格式:

     └── src
       └── main
         └── java

在这个java目录下,我们可以建立自己的package和java文件。

如果我们把shell定位到这个工程目录,运行mvn compile命令,就会将我们的java代码进行编译。如果编译成功了,说明我们成功的下载了我们所需要的jar包。这些jar包在我们的默认路径下:当前用户/.m2/repository

如果我们想把自己写的类,打成一个包作为另外工程的Dependency。我们可以将shell定位到这个工程,运行命令:mvn install。我们的代码就会打成一个jar包放到Repository当中去。


四、说明

在Maven当中有两个概念:goal和phase。其实通俗点来说,这两个都是Maven命令的表示。

goal命令:一个命令就是一个动作。
phase命令:分成好几个阶段完成,可能要指定好几个goal命令。

如:我们如果指定compile这个phase命令:它其实执行的命令有:
1.validate 2.generate-sources 3.process-resources 4.generate-resources 5.process-resources 6.compile

Maven Phase:
validate:验证工程是否正确,所有必要的信息是否可用
compile:编译工程的源代码
test:利用合适的测试框架来测试编译后的源代码。这个测试不需要代码被打成包或者发布。
package:将编译后的代码以发布的格式进行打包,如jar、war
integration-test:测试发布后的工程在集成环境下时候可运行
verify:运行检测验证package是否合法或者满足某些质量要求
install:将package install到本地的repository,作为其他项目的dependency
deploy:将最终的package拷贝出来,与其他的开发者共享,进行上线测试


  

posted on 2014-03-11 15:40  飞机说之代码也疯狂  阅读(183)  评论(0编辑  收藏  举报