maven
2021-03-25 22:21:03 50 举报
AI智能生成
通过思维导图,在脑海中构建maven知识体系
作者其他创作
大纲/内容
简介
maven是什么
专家、内行
项目管理工具
功能
项目构建
清理
编译
测试
打包
部署
依赖管理
好处
不需要繁琐的构建步骤,可以一键构建
不用去网上找依赖包引入,只需在pom文件中填写依赖坐标
管理版本冲突
可以降低打包后的项目大小
使用
约定
/src/main/java
源码目录
/src/main/resources
项目所需资源
/src/test/java
测试代码
/src/test/resources
测试所需资源
/target
打包输出目录
/target/classes
编译输出目录
/target/test-classes
测试编译输出目录
archetype生成项目骨架
mvn archetype:generate
根据自定义模板构建项目
maven-archetype-webapp
pom.xml
packaging为war
带有junit依赖声明
/src/main/webapp目录
/src/main/webapp/index.jsp
/src/main/webapp/WEB-INF/web.xml
命令
clean
清空输出目录/target
compile
编译项目源码到/target/classes,编译后从中央仓库或远程仓库下载依赖包
test
单元测试
测试类必须位于/src/test/java
类名必须满足xxxTest.java规范
package
打包
install
安装到本地仓库
deploy
打包项目到私服
坐标和依赖
坐标
groupId
公司或组织
artifactId
项目
version
版本
packaging
打包方式,默认jar
依赖
3种classpath
编译
测试
运行
依赖范围
compile
默认依赖范围,对3种classpath都有效,例如spring-core
test
对测试有效,例如junit
runtime
对测试和运行有效,例如JDBC 驱动实现
provided
对编译和测试有效,例如servlet-api
system
与provided一样,必须依赖systemPath显式指定的路径,由于与本机系统绑定,可能造成构建的不可移植,慎用
import
在dependencyManagement标签中使用才有效,将目标pom中的dependencyManagement配置导入当前pom中
依赖传递
分类
以下的间接依赖指的是第二依赖
间接依赖范围是compile,传递性依赖范围与直接依赖范围一致
间接依赖范围是test,无法传递依赖
间接依赖范围是provided,只有当直接依赖范围也是provided才可以传递依赖,传递性依赖范围是provided
间接依赖范围是runtime,不管直接依赖范围是啥都可以传递依赖且依赖范围和直接依赖一致,但如果直接依赖范围是compile,传递性依赖为runtime
原则
路径近者优先
依赖路径短的生效
声明者优先
同级依赖在pom.xml中的位置在前面的生效
仓库
定义
共享依赖的地方
分类
本地仓库(本机)
构建maven项目时,首先会从本地仓库查找资源,找不到的话再从远程仓库下载
远程仓库
私服(局域网)
定义
一种特殊的远程仓库,当maven需要下载资源时,先请求私服,没有的话私服从外部仓库下载,之后返回请求资源
优点
节省自己的外网带宽
加速maven项目构建
部署自己内部的第三方构件
提高稳定性,增强控制
降低中央仓库的负荷
中央仓库(外网)
镜像
指的是仓库X可以提供仓库Y的所有内容,那么就认为X是Y的一个镜像,比如阿里maven就说中央仓库在中国的镜像,由于地理位置的因素,该镜像可以提供更快的速度,更换镜像需要配置settings.xml文件
生命周期
定义
对构建过程的抽象和统一,抽象了构建的各个步骤、次序
3套生命周期
clean:清理项目
pre-clean
clean
清理上一次构建生成的文件
post-clean
default:构建项目
validate
验证工程是否正确,所需的信息是否完整
......
compile
编译项目源码
test-compile
编译项目的测试代码
test
使用单元测试框架运行测试
package
打包
install
将包安装到本地仓库
deploy
将包复制到远程仓库
site:建立项目站点
命令行
mvn clean
clean生命周期的clean
mvn test
default生命周期的test
mvn clean install
插件
插件绑定
内置绑定
自定义绑定
插件配置
命令行配置
-D键=值,例如mvn install -Dmaven-test-skip=true
pom中插件全局配置
pom中插件任务配置
聚合和继承
聚合
定义
各个模块聚合到一起构建
用法
packaging是pom并定义modules
作用
将工程拆分为多个模块后,需要手动逐个安装到仓库后依赖才能生效,修改源码后也需逐个手动进行clean,而使用聚合之后可以批量进行清理、安装工作
继承
抽取各模块相同的依赖和插件,可以消除重复配置
jar包锁定,当子工程中出现同名的jar包时且版本与父工程中不同时,jar包的版本将保持与父工程中的一致
子工程在继承父工程的依赖时,<scope>标签的值为test provide时将不会被子工程继承
0 条评论
下一页