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拷贝出来,与其他的开发者共享,进行上线测试