Maven 1
1 什么是Maven
Maven是java平台下的一款项目构建和依赖管理的自动化管理工具。
项目构建:将我们的源代码、配置文件变成可执行的war包或者jar包。
依赖管理:项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理。
2 Maven的优点
1 简化了项目依赖管理。
2 便于项目升级。 无论是项目本身的升级还是项目使用到的依赖升级
3 有助于多模块项目的开发。一个模块开发好后,发布到仓库,依赖该模块时直接从仓库更新,而不用自己去编译。
4 maven有很多插件,便于功能扩展。 如生产站点,自动发布版本等
3 Maven仓库snapshot快照版本与release正式版本的区别
1 Snapshot版本代表不稳定、尚处于开发中的版本,
在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本
2 Release版本则代表稳定的版本,编译打包时如果本地
已经存在该版本的模块则不会主动去镜像服务器上下载。
选择: 在协同开发期间,活跃模块的版本号使用SNAPSHOT
而在生产环境中依赖RELEASE版本模块
4 Maven坐标
一般maven用groupId , artifactId, version , pakaging 来表示项目的某个版本。
5 Maven常见的依赖范围有哪些?
1 compile:编译依赖,默认的依赖方式,在编译(编译项目和编译测试用例),运行测试用例,运行(项目实际运行)三个阶段都有效,典型地有spring-core等jar。
2 test:测试依赖,只在编译测试用例和运行测试用例有效,典型地有JUnit。
3 provided:对于编译和测试有效,不会打包进发布包中,典型的例子为servlet-api,一般的web工程运行时都使用容器的servlet-api。
4 runtime:只在运行测试用例和实际运行时有效,典型地是jdbc驱动jar包。
6 Maven的生命周期
maven有三套生命周期,分别为:
1、clean 周期:主要用于清理上一次构建产生的文件,可以理解为删除target目录
2、默认周期,
主要阶段包含:
1 process-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,
2 compile 编译src/main/java下的java文件,产生对应的class,
3 process-test-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,
4 test-compile 编译src/test/java下的java文件,产生对应的class,
5 test 运行测试用例,
6 package 打包构件,即生成对应的jar, war等,
7 install将构件部署到本地仓库,
8 deploy 部署构件到远程仓库
3、site周期
主要阶段包含
site 产生项目的站点文档
site-deploy 将项目的站点文档部署到服务器
7 我们经常使用“Mvn Clean Package”命令进行项目打包,请问该命令执行了哪些动作来完成该任务?
见上面过程。
8 依赖的解析机制,插件的解析机制
9 多模块如何聚合
配置一个打包类型为pom的聚合模块,然后在该pom中使用<module>元素声明要聚合的模块。
10 对于一个多模块项目,如果管理项目依赖的版本
在父模块中配置dependencymanagement和pluginManagement,子模块中使用<parent>元素指定父模块。这样子模块在定义依赖时就可以只定义groupId和artifactId,自动使用父模块version,这样统一整个项目依赖的版本。
11 一个项目的依赖来源于不同的组织,可能这些依赖还会依赖别的Jar包,如何保证这些传递依赖不会引起版本冲突。
使用<dependency>的<exclusion>元素将会引起冲突的元素排除。
12 常见的Maven私服的仓库类型。
1 hosted repository(宿主仓库) , 2 proxy repository(代理) ,3 group (仓库组)
13 如何查询一个插件有哪些目标(Goal)
mvn help: describe -Dplugin=groupId:artifactId.
14 常用Maven插件介绍
1 tomcat-maven-plugin 插件使用
2 maven-assembly-plugin :用途是制作项目分发包,
3 maven-dependency-plugin :帮助分析项目依赖
4 maven-enforcer-plugin : 创建一系列强制大家遵守的规则
5 maven-release-plugin : 用途是帮助自动化项目版本发布,
6 maven-help-plugin