Maven使用小记

用了maven有一小段时间了,挺不错的项目代码构建和管理工具,结合之前看网上公开课的笔记、还有其他网络资料,在这里做简单记录。

一、maven介绍、安装

1、maven基于项目对象模型(POM),来管理项目的构建、报告和文档,覆盖项目的生命周期,包括编译、测试、运行、清理、打包和部署;有效解决了jar的引入和依赖等管理。

2、maven的安装比较简单,下载后解压,并配置M2_HOME和PATH就可以通过maven -v查看maven版本了。在Eclipse中可以安装m2eclipse插件更为方便地使用maven。

二、maven项目结构、常见命令

1、普通maven项目结构如下:

src

-main

    -java

      -package(主代码)

-test

    -java

      -package(主代码)

-resources

    -java

2、常用的命令有:

mvn –v 查看版本

mvn complie 编译源代码

mvn test 测试

mvn package 打包

mvn clean 删除生成的target目录

mvn install 安装jar包到本地仓库

 

3、自动创建目录骨架--archetype插件 两种方式

(1)mvn archetype:generate 按照提示进行选择

(2)mvn archetype:generate –DgroupId=组织名(公司网址反写+项目名) -DDartifactId=(项目名-模块名) -Dversion=版本号 -Dpackage=代码所在的包

三、核心概念

1、概念

坐标  构件构件通过坐标作为其唯一标识

仓库(本地仓库、远程仓库)

镜像仓库(可在setting.xml里设置mirror,设置之后不直接访问本地仓库而是访问镜像仓库)

更改仓库位置(setting.xml设置local路径)

2、生命周期

maven的生命周期包括清理、编译、测试、package打包、集成测试、验证、部署等。

有clean清理项目、default构建项目、site生成项目站点等三种操作:

(1)clean清理项目

pre-clean:执行清理前的工作 、 clean:清理上一次构建生成的所有文件 、post-clean:执行清理后的文件

(2)default构建项目(最核心)

compile、test、package、install

(3)site生成项目站点,根据pom信息生成站点

pre-site生成站点前要完成的工作  、site生成项目的站点文档、post-site在生成项目站点后要完成的工作、site-deploy发布生成的站点到服务器上

3、pom.xml解析

<project>

<modelVersion>指定pom版本

<groupId>反写的公司网址+项目名

<artifactId>项目名+模块名

<version>版本号

第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号

0.0.1snapshot快照

alpha内部测试

beta公测

release稳定

ga正式发布

<packaging>打包方式,默认jar,war、zip和pom也可以指定

 

<dependencies>依赖列表

<dependency></dependency>

</dependencies>


<groupId>/<artifactId>/<version>/<type>/<scope>/<optional>(设置依赖是否可选,true则必须显式引入)/<exclusions>/<exclusion>

 

<dependencyManagement>依赖管理

<dependencies><dependency>不会运行,,用于定义父模块,供子模块继承


 <build>构建方式


<plugins>插件列表

 <parent>指定父模块

<modules>指定多个子模块一起编译


4、依赖范围scope(控制依赖与三种classpath的关系)

三种classpath:编译、测试、运行

compile默认,对三种classpath都有效

provided测试和编译有效,最后运行不会加入。。如servlet

runtime在测试和运行时有效。。如jdbc

test在测试时有效。。如junit

system编译和测试有效,,跟系统相关联,可移植性差

import导入依赖范围,,只使用在dependencyManagemant中表示从其他的pom中导入dependency的配置


5、依赖传递 、依赖冲突

A->B->C,需要在B中引入C的快照(其中C必须经过打包并安装到本地仓库,否则会找不到相应的包;在A中引入B快照也类似,A引入B后会间接引入C的快照,要排除C的话用exclusion来设定)

 

依赖冲突 (引入的是哪个版本的依赖)

(1)短路优先,路径短的优先解析

A->B->C->X

A->D->X

(2)先声明先优先

路径长度相同,则谁先声明,先解析谁


6、聚合和继承

聚合用于多个模块的install

pom中 package设置为pom

 

继承

使用共同的依赖,如junit

将共同的依赖抽象成一个父类

pom中的dependencyManagemant


四、maven打包过程遇到的问题和解决方式

1、打包后,pom.xml引用的jar包缺失

通过maven-assembly-plugin插件和jars-with-dependencies.xml将依赖的jar包一起打包

2、开发、测试和生产不同环境下的打包

使用 profile 和filtering 实现多种环境下的资源配置管理

(指定默认激活的profile、过滤器和资源所在目录)mvn packge -Pid (id为test、prod等)

3、配置文件动态修改,而不用反复重新打包

要实现这种效果,需要先加载特定路径下的配置文件,如果没有该路径或没有配置文件再加载jar包中的配置文件。这可通过commons configuration配置文件包来实现。通过在配置文件夹下新建配置文件进行覆盖加载,便可以覆盖掉jar包中同名的配置文件,实现动态改变·配置无需重新打包。

暂时记录如上,后续有待补充。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值