项目管理构建工具Maven的使用
Maven
Maven是一款项目管理工具,基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
大多数JavaEE开发都会使用Maven来进行管理,同类型的还有Gradle,Ant。
1.Maven的安装
- 1.下载maven http://maven.apache.org/download.cgi
- 2.配置环境变量
M2_HOME = maven安装包解压后的路径 - 3.maven目录说明
- bin 执行脚本文件
- boot 包含一个类加载起框架
- conf 配置文件 setting.xml
- lib 类库
安装完成后可以在命令行中使用 mvn -v 测试是否安装完成,不过一般开发过程中会直接在ide中使用maven。
2.Maven的相关配置
maven目录中 /conf/setting.xml可以配置Maven的相关信息,一般需要配置
- 本地仓库地址
<localRepository>D:\maven_repository</localRepository>
- 远程仓库镜像 根据需要配置公司私服地址
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
此外还可以配置代理、或者是公司私服需要使用的账户密码
3.Maven的生命周期与常用构建命令
常用构建命令:
- mvn -v 查看Maven版本
- mvn compile 编译 运行后会在target目录下产生.class字节码文件
- mvn test 测试 运行后会在target目录下产生测试报告
- mvn package 打包
- mvn clean 删除target(字节码文件、测试报告)
- mvn install 将项目jar包安装到本地仓库
- mvn archetype:generate 插件 自动创建Maven项目骨架
clean 项目构建前执行一些清理工作
- pre-clean 执行一些需要在clean之前完成的工作
- clean 移除所有上一次构建生成的文件
- post-clean 执行一些需要在clean之后立刻完成的工作
default 构建的核心部分,编译,测试,打包,部署等等
compile
test
package
install
site 生成项目站点
- site 生成项目的站点文档
- post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy 将生成的站点文档部署到特定的服务器上
4.pom文件的配置
项目相关描述
<modelVersion>4.0.0</modelVersion> --当前pom版本
<groupId>com.zhujun</groupId> --组织名称
<artifactId>crm-service</artifactId> --项目名称
<version>2.0</version> --版本号
<packaging>pom</packaging> --打包方式
版本号的相关表示
版本号 - 0.0.0snapshot
大版本号.分支版本号.小版本号
snapshot 快照
alpha 内部测试
beta 公测
release 稳定
GA 正式发布
通过 groupId artifactId version 就能确定一个项目的坐标
项目的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
scope:指定依赖范围
1.compiler:默认的范围,编译测试运行都有效
2.provided:编译测试时有效
3.runtime:测试和运行时有效
4.test:测试时有效
5.system:与本机系统相关联,可移植性差
6.import:导入的范围,只在dependencyManagement中使用,表示从其他的pom中导入dependency的配置
项目的版本管理
<dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>2.0.0</version>
</dependency>
</dependencyManagement>
dependencyManagement中声明的项目并不会被依赖到,只是声明版本,继承此项目的项目依赖spring-boot-starter-test时,使用的版本都会默认为2.0.0,避免同一个项目中引入不同版本的依赖
插件管理
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5.项目的聚合与继承
1.聚合
当多个项目需要同时构建时,就可以使用maven的聚合 如下项目聚合了A、B、C 对该项目构建时就会对ABC按照声明顺序同时构建
<modules>
<module>../A</module>
<module>../B</module>
<module>../C</module>
</modules>
2.继承
多个组件聚合时 如果使用了相同的依赖聚合时就会出现重复
用一个父组件定义该依赖,然后有需要的组件继承该组件,聚合时就不会重复
- 父项目打包方式为pom
- 父项目 dependencyManagement定义依赖的版本号 父项目本身不会引入其中的依赖
- 子项目 使用parent 指定继承的父项目
6.依赖的传递与继承
间接依赖 A->B B->C则 A->C
排除依赖 在A的POM中使用exclusions标签,消除A对C的间接依赖
<exclusions>
<exclusion>
<groupId>com.zhujun</groupId>
<artifactId>C</artifactId>
</exclusion>
</exclusions>
依赖冲突
1.短路优先:
A->B->X(v1.0),
A->C->D->X(v2.0)
结果
A->X(v1.0)
2.路径长度相同根据声明顺序
A->B->X(v1.0),
A->C->X(v2.0),
A-pom.xml:
...
<dep C>
<dep B>
..
结果
A->X(v2.0)
7.maven release plugin的使用
之前公司没用使用Jenkins时使用的就是该插件,来手动打包上线
使用该插件发布时会在配置的Git上打一个tag和发布release版本包到私服
pom中配置 git相关
<scm>
<developerConnection>scm:git:git@192.168.70.244:ETS/ets-pr/ky-open-potal-war.git</developerConnection>
<tag>HEAD</tag>
</scm>
相关指令
release:prepare git上打tag
release:perform 上传releasejar包 到私服
release:rollback 只能回滚本地,Git服务器上已经打得Tag无法回退
参考博客:https://www.jianshu.com/p/c4c2ae1686a2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构