2、Maven 构建项目命令4.0.0 com.sqd.com maven-test-parent1.0.0-SNAPSHOT ../pom.xml com.sqdkk sparsearray0.0.1-SNAPSHOT jar maven-test Demo project for maven 8 1.1.16 com.alibaba druid${druid.version} org.springframework.boot spring-boot-maven-pluginorg.apache.maven.plugins maven-compiler-plugin8
- mvn compile # 编译
- mvn clean # 清理
- mvn test # 测试
- mvn package # 打包
- mvn install # 安装到本地仓库
依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
- 路径优先:依赖中出现相同资源,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:同级配置了不同资源的不同版本时,后配置的覆盖先配置的
3.4 排除依赖(排包),主动断开依赖com.alibaba druid1.1.16 true
在依赖中使用
推荐使用 idea 插件 Maven Helper 可以快速排除 jar 包,解决 jar 包冲突问题
3.5 依赖范围com.alibaba druid1.1.16 true
依赖的 jar 默认情况可以在任何地方使用,通过
作用范围:
- compile:默认,主程序范围有效(main)
- test:测试,测试程序范围有效(test文件夹)
- provided:主代码和测试代码
- runtime:是否参与打包(package 指令范围内)
清理工作
- pre-clean:执行一些在 clean 之前完成的工作
- clean:移除上一次构建生成的文件
- post-clean:执行一些需要在 clean 之后完成的工作
核心工作:编译、测试、打包、部署等
- validate:校验
- initialize:初始化
- generate-sources:生成源代码
- process-sources:处理源代码
- generate-resources:生成资源文件
- process-resources:处理资源文件
- compile:编译
选择 compile 指令的话,执行到这里结束
- process-classes:处理类文件
- generate-test-sources:生成测试源代码
- process-test-source:处理测试源代码
- generate-test-resoutces:生成测试资源文件
- process-test-resources:处理测试资源文件
- test-compile:编译测试代码
- process-test-classes:处理测试类文件
- test:测试
选择 test 指令的话,执行到这里结束
- prepare-package:准备打包
- pre-integration-test:集成测试前
- integratioin-test:集成测试
- post-integration-test:集成测试后
- verify:验证
- install:安装
- deploy:部署
生产报告、发布站点等
- pre-site:执行一些需要在生成站点文档之前完成的工作
- site:生成项目的站点文档
- post-site:执行一些需要在站点文档生成后完成的工作,并且为部署做准备
- site-deploy:将生成的站点文档部署到特定的服务器上
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
- 默认 maven 在各个生命周期上绑定有预设的功能(clean、install、packaging、compile等)
- 通过插件可以自定义其他功能
6、Maven 多模块构建维护 6.1 模块聚合org.apache.maven.plugins maven-source-plugin2.2.1 jar generate-test-resources
聚合方式模块聚合用于快速构建项目,在当前模块中配置关系,可以感知到参与聚合的模块有哪些
-
创建一个空模块,打包类型定义为 pom
pom -
定义当前模块进行构建时关联的其他模块
maven-test-api maven-test-spi maven-test-impl 模块构建执行顺序与模块之间的依赖有关,与配置顺序无关
示例:
6.2 模块继承4.0.0 com.sqd.com maven-test1.0.0-SNAPSHOT pom maven-test-api maven-test-spi maven-test-impl
继承方式继承用于快速配置,在子模块中配置关系,父模块无法感知哪些子模块继承了自己
-
在父工程中管理依赖
com.alibaba druid1.1.16 -
在子工程中声明父工程坐标及对应的位置,选择要使用的依赖
com.sqd maven-test1.0.0-SNAPSHOT ../pom.xml com.alibaba druid
比较多,列几个比较常见的:
- grupId:项目组 ID,项目坐标核心元素
- version:项目版本,项目坐标核心元素
- description:项目描述信息
- url:项目 url 地址
- distributionManagement:项目部署配置
- properties:自定义的 Maven 属性
- dependencies:项目的依赖配置
- dependencyManagement:项目依赖管理配置
- repositories:项目仓库配置
- build:项目源码目录、输出目录、插件、插件管理等配置
- reporting:项目报告输出目录配置、报告插件配置等
示例:
父工程进行依赖管理
4.0.0 com.sqd.com maven-test1.0.0-SNAPSHOT pom maven-test-api maven-test-spi maven-test-impl com.alibaba druid1.1.16 org.apache.maven.plugins maven-source-plugin2.2.1 jar generate-test-resources
子工程声明父工程坐标位置并选择要使用的依赖
7、Maven properties 属性定义与使用 Maven 属性类别4.0.0 maven-test-api com.sqd maven-test1.0.0-SNAPSHOT ../pom.xml jar com.alibaba druid
-
自定义属性(定义变量,方便统一维护)
1.1.16 -
内置属性(Maven 内置属性,快速配置)
${basedir} ${version}
-
Setting 属性(Maven 配置文件 setting.xml 的标签属性)
${settings.localRepository}
-
Java 系统属性
${user.home}
-
环境变量属性
${env.JAVA_HOME}
示例:
8、版本管理 8.1 工程版本1.1.16 4.1.2 com.alibaba druid${druid.version}
- SNAPSHOT(快照版本,开发中~)
- 项目开发中,为了方便团队进行合作,解决模块间互相依赖和更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫做快照版本(测试阶段版本)
- 快照版本会随着开发进展不断更新
- RELEASE(发布版本)
- 项目发布的较为稳定的版本,对应的构建文件是稳定的,进行后续开发也不会改变当前发布版本内容,称为发布版本
- 版本号规范:<主版本>.<次版本>.<增量版本>.<里程碑版本>
- 主版本:重大架构的更新
- 次版本:较大的功能增加和变化
- 增量版本:漏洞修复等
- 里程碑版本:不稳定,需要测试
在配置文件中加载 pom 文件中定义的属性
10、多环境开发配置${project.basedir}/src/main/resources true **/*.properties
在 pom.xml 文件中配置多环境
pro_env true 1.1.16 ......
加载指定环境命令:mvn 指令 -P 环境id
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)