01. Maven知识体系
2021-03-12 15:10:35 1 举报
AI智能生成
Maven的详细知识体系,欢迎学习参考
作者其他创作
大纲/内容
生命周期
clean 生命周期
pre-clean
clean
post-clean
default 生命周期
validate:校验这个项目的一些配置信息是否正确
initialize:初始化构建状态,比如设置一些属性,或者创建一些目录
generate-sources:自动生成一些源代码,然后包含在项目代码中一起编译
process-sources:处理源代码,比如做一些占位符的替换
generate-resources:生成资源文件,处理各种xml、properties配置文件,做一些占位符替换。
process-resources:将资源文件拷贝到目标目录中,方便后面打包。
compile:编译项目的源代码
process-classes:处理编译后的代码文件,比如对java class进行字节码增强
generate-test-sources:自动化生成测试代码
process-test-sources:处理测试代码,比如过滤占位符
generate-test-resources:生成测试使用的资源文件
process-test-resources:拷贝测试使用的资源文件到目标目录中
test-compile:编译测试代码
process-test-classes:对编译后的测试代码进行处理,比如进行字节码增强
test: 使用单元测试框架运行测试
prepare-package:在打包之前进行准备工作,比如处理package的版本号。
package:将代码进行打包,比如jar包
pre-integration-test:在集成测试之前进行准备工作,如果建立好需要的环境。
integration-test:将package部署到一个环境中以运行集成测试
post-integration-test:在集成测试之后执行一些操作,比如清理测试环境
verify:对package进行一些检查来确保质量过关
install:将package安装到本地仓库中,这样开发人员自己在本地就可以使用了
deploy:将 package上传到远程仓库,这样公司其他开发人员也可以使用了
site 生命周期
pre-site
site
post-site
site-deploy
默认的phase和plugin绑定
process-resource:resources:resources
compile:compiler:compile
process-test-resources:resources:testResources
test-compile:compiler:testCompile
test:surefire:test
package:jar:jar 或者 war:war
install:install:install
deploy:deploy:deploy
site:site:site
site-deploy:site:deploy
clean:clean:clean
mvn 常用命令
命令和生命周期
mvn clean package:打包
clean 是指clean 生命周期中的clean phase
package是指default生命周期中的package phase
mvn clean install:安装到本地
mvn clean deploy:部署到远程私服
直接执行指定插件的一个goal
mvn dependency:tree
mvn deploy:deploy-file
插件
插件和goal简介
将插件的goal绑定到phase上
插件配置信息
找到自己需要的插件
官网查找
百度搜索
插件解析:和查找依赖的流程一样
常用插件
cobertura:单元测试覆盖率
jetty:web服务
cargo:自动化部署
1. 本地安装一个tomca6
2. 给tomcat6设置一个管理员
3. 启动tomcat
4. 在项目里加入carto插件配置
5. 在settings.xml 里加入pluginGroup,org.codehaus.cargo
6. 运行mvn clean package打包。
7. cargo:deploy 部署 / cargo:redeploy 重新部署
profile多个环境
基于properties配置
1. 资源文件中使用占位符
2. pom.xml中加入profile
3. 开启资源过滤
4. 默认激活
5. 激活指定profile :mvn clean package -Pdev
基于resource配置
1. 创建多个目录
2. 给每个profile配置需要拷贝到打包目录的resource
3. 激活指定profile :mvn clean package -Pdev
cargo插件,根据环境不同,自动化部署
基础知识
安装
下载、解压
配置环境变量
mvn -version:检查环境是否正确
settings.xml
统一配置在~/.m2/settings.xml
修改本地仓库地址
pluginGroups:通过plugin的前缀来寻找。
mirrors:用于定义一系列远程仓库的镜像
servers:服务端的配置信息
proxies:用来配置不同的代理。
profiles:根据环境参数来调整构建配置的列表。
activation:自动触发profile的条件逻辑。
jdk:jdk的版本满足条件的时候激活
os:当前操作系统满足条件的时候激活。
property:检测到了这样一个键值对的时候激活
file:当文件存在或者不存在的时候激活。
activeByDefault:默认是否激活。
properties:定义属性的键值对。
repositories:定义远程仓库。
pluginRepositories:plugin插件仓库。
activeProfiels:手动激活profiles的列表。
mirrors 和 profiles下的repositories 关系。
maven项目结构
src/main/java:源文件
src/main/resource:资源文件
src/test/java:测试源文件
target:存放编译后文件、打包后文件等..
pom.xm:(project object model )项目对象模型
多层仓库架构图
聚合
创建pom工程为父工程
多个module工程
继承
可继承版本
在父工程声明依赖和插件
<dependencyManagement>
<pluginManagement>
坐标
groupId
attifactId
version
总版本号:一般指整体架构有特别的升级或者变化。
分支版本号:一般新增了一些功能或者模块。
小版本号:一般是修复了一些bug,或者轻微改动。
里程碑标识
snapshot:快照版本,正在开发或者测试中,不稳定。
alpha:内测版本
beta:公测版本
release:稳定版
ga(generally available):用户可放心使用的版本。
packaging
classfier
依赖管理
声明依赖
<dependency>引入依赖
查找所需依赖
官网
百度
依赖范围
compile:默认,对编译、测试、运行的classpath有效。
test:仅仅对测试有效。
provided:编译、测试有效,运行的时候无效。
runtime:测试、运行有效。但是编译无效。
传递性依赖
依赖调解
依赖距离不一致:就近原则。
依赖距离一样:使用先声明的。
可选依赖
<optional>true</optional>:此时依赖传递失效,不会向上传递。
这个很少很少使用。
解决依赖冲突:使用最新版本
约束依赖
1. 给自己项目开发一个pom的工程
2. 依赖方加上scope 范围为import ,类型为pom的依赖。
nexus私有仓库
仓库类型
hosted:宿主仓库
proxy:代理仓库
group:仓库组
virtual:虚拟仓库,为了适配Maven1
nexue仓库架构图
搭建企业级的仓库
maven-public 仓库组:已有
maven-central 中央代理仓库:已有,把地址修改为阿里云
maven-snapshots 宿主机仓库:已有
maven-releases 宿主机仓库:已有
3rd-party 宿主机仓库:需要手动创建
强制从公司私服下载,可参考
方案一:配置profiles,仓库Id设置为central
方案二:配置mrirror
权限管理
默认账号
admin:管理员账号,密码admin
anonymous:匿名账号,无需认证信息,可以下载、查看。
deployment:普通开发账号,密码deployment123,(nexux3.0新版本已经消除了)
管理用户:Users页面添加、管理用户、分配角色
角色管理:Roles页面管理,创建、给角色分配权限
项目发布到仓库中
1. pom.xml 中指定发布到哪个仓库。
2. 账号配置:在settings.xml中通过<server>元素配置账号密码。
3. 执行命令:mvn clean deploy
第三方jar手动上传:一般上传到3rd-party仓库。
方法一:通过界面上传
方法二:通过命令上传
收藏
0 条评论
下一页