maven在eclipse中的学习总结

学习心得

一.   Maven介绍

1 .Maven学习总结是在Eclipse环境使用总结出来的,也是在eclipse中进行应用。maven在如何安装到eclipse不在描述。maven的配置文件,只列举几个重要的配置项:Repository(仓库)配置。Maven的仓库主要有两种:

i.                   LocalRepository(本地仓库)例如:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录(可以在配置文件中配置本地路径如下图所示)

ii.                Remote Repository(远程仓库),由三种仓库组成:中央仓库、私服、其他的公共的。

(1)公司用到的私服仓库地址配置如下图所示:

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

公司的私服仓库是作为maven的cental中心仓库一个镜像文件,换句话说如果maven的远程仓库存储的内容,都可以通过在公司的私服仓库中获得。镜像可以创建多个,这样做的优点,可以减缓maven中心仓库的压力。

(2)  如果镜像仓库需要认证,在配置setting.xml中的<server></server>即可:

 

 

二  结合contact项目论述maven的具体应用。

1. 每个maven项目都会有一个pom.xml的文件,pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

2. maven工程的文件结构.这是eclipse创建maven工程自定产生的文件。

 

Maven工程中src/main/java包放的是源码,src/test/java包放的是对源码的测试代码,target存储的是maven工程进行compile、package等产生文件。

3.     contact项目中的模块contact-friend-api工程中pom.xml文件如下。


  <groupId>...</groupId>是项目或者组织的唯一标志,并且配置时生成路径也是由此生成;<artifactId>...</artifactId>项目的通用名称;<version>...</version> 项目的版本;<packaging>...</packaging>打包机制,如果不写默认是jar包。groupId、artifactId、version可以确定唯一个项目,是maven的管理中一个坐标。<parent>标签是继承其他项目的pom.xml,也是标志继承其他的项目,当第一次加载项目的时候,就会根据pom.xml文件的配置去找依赖的项目,先去本地仓库中找,在本地仓库中被依赖的项目必须被打成包;如果本地仓库找不到就去私服仓库中查询,私服仓库根据pom.xml配置中的<groupId>、<artifactId>、<version>可以找到我们需要的包,如果找到,下载到本地,然后缓存到本地仓库中;如果依赖的项目是一些非开源项目,需要我们先将依赖的maven项目打包,然后上传到我们私服仓库中。

4.Maven的几个重要的生命周期

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单。第二,这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了。

·  validate

· generate-sources

· process-sources

·  generate-resources

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

·  compile    编译项目的源代码。

· process-classes

· generate-test-sources 

· process-test-sources

· generate-test-resources

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

·  test-compile    编译测试源代码。

· process-test-classes

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

· prepare-package

 

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

· pre-integration-test

· integration-test

· post-integration-test

·  verify

·  install  将包安装至本地仓库,以让其它项目依赖。

·  deploy  将最终的包复制到远程的仓库,以让其它开发人员与项目共享

 

运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的。

下面以在eclipse下如何打包contact-friend-api项目打包为例(也可以用maven自带的命令对其打包)讲述:

点击maven build 进入maven运行设置界面,如下:

 

 

 

 

在Goals输入要执行的周期,例如package,也可以输入执行多个周期,中间用空格隔开。在设置执行设置maven周期时,会自动执行它前面的几个生命周期,如执行package时,会执行clean和compile。在User setting设置下面我们可以执行的模式,通常我们会将Skip Tests选中,因为如果不选中,在执行maven生命周期时就会对测试方法进行测试,测试失败,maven生命周期将无法正常运行。如下图:

 

我们其他项目要想依赖,需将打包后的maven包安装到本地仓库中,如果想要其它开发人员与项目共享,可以发布到远程仓库(多为公司自己设置的私服仓库),只需要执行deploy命令,就会根据maven中setting.xml文件中的远程仓库地址,将其上传到远程仓库上。如下图:

上传到远程仓库的文件目录如下图:

 

5 . maven的插件的使用

Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。在此以将源码打入jar中的插件为例将讲述插件的用法,

所有的插件都放在<plugins>标签内,<artifactid>和version指定用的那个插件,开源的插件在maven的中心仓库中可以找到,跟访问一般maven项目一样,都需要指定他们的坐标。<execution>标签中有一个<phase>他指定插件绑定了maven项目中的周期,也就是说maven项目执行到<phase>指定的周期,插件才开始运行。<goal>指定了插件所要执行jar周期,<configuration>是配置参数,<attach>为true意思是将项目中的源码打入jar包中,以供其他人在引用jar时可以看到源码,更清楚的了解实现过程。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值