maven基础学习以及多模块开发

网址:Mven.apache.org

1、下载maven3.3.3  jdk1.7

maven目录的介绍:

boot目录包含类加载器的框架

bin目录包含maven的运行脚本

config是配置文件目录

lib 是平时用到的类库

2、设置环境变量

M2_HOME  maven的安装目录

path:M2_HOME%bin

3、查看是否配置成功

命令行:mvn -v

4、maven常用的命令

compile 编译

test 测试

package 打包

clean 删除target下存放的经过编译的字节码文件和测试报告

install 将我们的jar安装到本地仓库中

clean compile 表示先运行清理之后运行编译

clean test 运行清理和测试

clean package 运行清理和打包

clean install 将打好的包安装到本地仓库中,便于其他的项目调用

clean deploy 运行清理和发布(发布到私服上面)

5、maven在eclipse中的相关配置

使用自己的maven

maven基础学习以及多模块开发

设置settings.xml的位置(安装目录下的config下的settings.xml)

maven基础学习以及多模块开发

修改本地仓库的位置

修改maven安装目录下的config下的setting.xml  <localRespository>

默认:用户的文档下面的.m2下

6、依赖的查询

所有的依赖都是通过坐标来存储的GAV

有一些仓库提供了坐标的查询

mvn.respository.com

https://www.sonatype.com/download-oss-sonatype

7、依赖的传递性依赖

依赖的范围:依赖的传递性(基于compile)

<scope></scpoe>没写默认是compile范围

<scope>test</scope>打包成war包时不会被打包

<scope>provided</scope>编译和测试时候有用 打包的是不放进去(serverlet-api)

<scope>runtime</scope>运行的时候依赖 编译的的时候不依赖

依赖冲突时先写哪个依赖就依赖于哪个

路径长短不一致,选择最短路径

精确地控制依赖:排除jar<exclusions></exclusions>

8、继承和聚合问题

聚合:完成进行一次构建命令完成全部模块的构建

创建pom文件

<module></module>父模块中要引入子模块

<packaging>jar</packaging>

继承:消除代码重复

<parent></parent>子模块中要指定父模块

继承的绝对路径是pom文件

<parent>

<relativePath>../parent/pom.xml</relativePath>

</parent>

<depandencyManagement>子类所需要的所有依赖</depandencyManagement>

对于依赖的继承而言都需要通过<depandencymanagement>完成,如果不管理子类会全部继承,这种可能导致一些模块存在不需要的依赖

子类中的依赖不需要版本号(不存在版本号冲突)

<groupid>${project.groupid}</groupid>

<version>${project.version}</version>

<packaging></packaging>规定项目的输出格式

实践应用中将依赖的聚合和继承全部写在一个pom.xml中

将pom.xml中的<packaging></packaging>中的jar改为pom时会报错,这时候需要maven->update project 错误消失

9、maven分模块的开发项目

maven的生成方式:(maven骨架生成)

mvn archetype:generate  创建maven项目

输入groupid artifactid version 创建完成

子模块(正常的maven工程)

maven基础学习以及多模块开发

父模块(只有pom文件的maven工程)

maven基础学习以及多模块开发

maven基础学习以及多模块开发

maven基础学习以及多模块开发

10、版本管理

如何有效的设置版本名称

总版本号.分支版本还.小版本号-里程碑版本

总版本号:表示底层框架的变动

分支版本号:增加一些功能

小版本号:在分支版本上进行bug的修复

里程碑:快照版本正在开发中的版本(SNAPSHOT) 内测版本(alpha)  公测版本(bate)发布版本(release) 完全可以投入市场(GA)