您的位置:首页 > 其它

maven上手

2016-04-25 17:01 190 查看
maven上手:

链接:maven基础介绍

mvn主要功能:编译代码、进行依赖管理、管理二进制库
pom.xml:

pom是指project object Model。pom是一个xml,在maven2里为pom.xml。是maven工作的基础,在执行task或者goal时,maven会去项目根目录下读取pom.xml获得需要的配置信息
pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等等
pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom
 
pom文件中节点含义如下:

project pom文件的顶级元素

modelVersion 所使用的object model版本,为了确保稳定的使用,这个元素是强制性的。除非maven开发者升级模板,否则不需要修改

groupId 是项目创建团体或组织的唯一标志符,通常是域名倒写,如groupId  org.apache.maven.plugins就是为所有maven插件预留的

artifactId 是项目artifact唯一的基地址名

packaging artifact打包的方式,如jar、war、ear等等。默认为jar。这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle。

version artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本

name 表示项目的展现名,在maven生成的文档中使用

url表示项目的地址,在maven生成的文档中使用

description 表示项目的描述,在maven生成的文档中使用

dependencies 表示依赖,在子节点dependencies中添加具体依赖的groupId artifactId和version

build 表示build配置

parent 表示父pom

Artifact:

是一个项目将要产生的文件,可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。
每个artifact都由groupId:artifactId:version组成的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中。

Repositories:

Repositories是用来存储Artifact的。里面有我们自己创建的工具,也可以储存别人造的工具,我们在项目中需要使用某种工具时,在pom中声明dependency,编译代码时就会根据dependency去下载工具(Artifact),供自己使用。
对于自己的项目完成后可以通过mvn install命令将项目放到仓库(Repositories)中。
仓库分为本地仓库和远程仓库,远程仓库是指远程服务器上用于存储Artifact的仓库,本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的.m2/repository下面。

Build Lifecycle,phase和goal:

lifecycle,phase和goal是maven的三个概念。一个lifecycle由一组phase组成,而每个phase可以挂载一个或多个goal。goal是maven执行的最小单元。它们用于定义一个项目build的过程。

maven的Build Lifecycle分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们每个都包含一组phase。

Build Lifecycle是由phases构成的,下面重点介绍default Build Lifecycle几个重要的phase。

validate 验证项目是否正确以及必须的信息是否可用


compile 编译源代码
test 测试编译后的代码,即执行单元测试代码


package 打包编译后的代码,在target目录下生成package文件


integration-test 处理package以便需要时可以部署到集成测试环境


verify 检验package是否有效并且达到质量标准


install 安装package到本地仓库,方便本地其它项目使用


deploy 部署,拷贝最终的package到远程仓库和替他开发这或项目共享,在集成或发布环境完成

以上的phase是有序的(注意实际两个相邻phase之间还有其他phase被省略,完整phase见lifecycle),下面一个phase的执行必须在上一个phase完成后。

若直接以某一个phase为goal,将先执行完它之前的phase,如mvn install将会先validate、compile、test、package、integration-test、verify最后再执行install phase。

goal:

goal代表一个特定任务,mvn package表示打包的任务,通过上面的介绍我们知道,这个任务的执行会先执行default lifecycle中,package phase之前的phase。
mven clean install则表示先执行clean的全部phase(包含其他子phase),再执行default中,install及其之前的phase。

maven常用参数和命令

mvn test-compile 编译测试代码
mvn test 运行程序中的单元测试

mvn compile 编译项目


mvn package 打包,此时target目录下会出现maven-quickstart-1.0-SNAPSHOT.jar文件,即为打包后文件


mvn install 打包并安装到本地仓库,此时本机仓库会新增maven-quickstart-1.0-SNAPSHOT.jar文件。
每个phase都可以作为goal,也可以联合,如之前介绍的mvn clean install

mvn archetype:generate 创建maven项目

maven实践
链接:maven实践

新建mvn项目
mvn -v //查看maven版本
~$mvn archetype:generate -DgroupId=com.mycompany.helloworld -DartifactId=helloworld -Dpackage=com.mycompany.helloworld -Dversion=1.0-SNAPSHOT //指定项目创建团体groupid、目标项目名artifactid、package名、版本号,生成archetype列表
357 //指定模板,应该使用maven-archetype-quickstart,此处选用357: remote -> de.bripkens:java-quickstart (Java quickstart archetype with some common libs)
//之后一路enter,终端窗口提供了基本信息,包括项目属性,groupid等。idea中点选import project,选项目文件夹和maven导入,可查看代码内容。可见mvn已经建立了[src]和[test]文件夹。
~$cd helloworld
~$mvn package//生成[target]文件夹,打包程序生成的jar文件helloworld-1.0-SNAPSHOT.jar位于根目录,classes为编译得到的主类,test-classes为测试类。
//报错idk版本,在pom.xml中更改<java.version>1.8</java.version>为1.7即可。
//仍然报错,在idea的project pref中,以及.idea下的complier.xml中更改java版本。
//排错后需要mvn clean install。
之后可在idea中右键src中的主类或测试类,进行debug。

Tips:如果idea提示若干包丢失,在idea中右键pom.xml可reimport完成重新导入。

Tips:整理项目中用到的自己不懂的知识点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: