文章目录
- 一. 基于IDEA的Maven工程创建
- 1.1 Maven工程GAVP属性
- (1)GroupID 格式
- (2)ArtifactID 格式
- (3)Version版本号格式
- (4)Packaging定义规则
- 1.2 IDEA构建Maven JavaSE工程
- 1.3 IDEA构建Maven JavaEE工程
- (1)手动创建
- (2)插件方式创建(推荐)
- 二. Maven 核心功能:功能依赖和构建管理
- 2.1 依赖管理和配置
- 2.2 依赖冲突
- 2.3 依赖导入失败解决方法
- 2.4 构建管理和插件配置
- (1)构建
- (2)构建生命周期
一. 基于IDEA的Maven工程创建
1.1 Maven工程GAVP属性
Maven工程有一组gavp属性,gav需要在创建项目的时指定,p有默认值,后期可通过配置文件修改。
G:GroupId
A:ArtifactId
V:Version
P:Packaging
前三个是必要的,而 Packaging 属性为可选项。
(1)GroupID 格式
com.{公司/BU }.业务线.[子业务线],最多 4 级。
例:com.taobao.tddl 或 com.alibaba.sourcing.multilang
(2)ArtifactID 格式
产品线名-模块名。语义不重复不遗漏,先到仓库中心去查证一下。
例:tc-client / uic-api / tair-tool / bookstore
(3)Version版本号格式
主版本号.次版本号.修订号 1.0.0
主版本号:当做了不兼容的 API 修改,或者增加了能改变产品方向的新功能。
次版本号:当做了向下兼容的功能性新增(新增类、接口等)。
修订号:修复 bug,没有修改方法签名的功能加强,保持 API 兼容性。
例: 初始→1.0.0 修改bug → 1.0.1 功能调整 → 1.1.1等
(4)Packaging定义规则
指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型!
packaging 属性为 jar(默认值),代表普通的Java工程,打包以后是.jar结尾的文件。
packaging 属性为 war,代表Java的web工程,打包以后.war结尾的文件。
packaging 属性为 pom,代表不会打包,用来做继承的父工程。
1.2 IDEA构建Maven JavaSE工程
注:此处version是一个默认值1.0-SNAPSHOT,自己后期可以在项目中修改!
1.3 IDEA构建Maven JavaEE工程
(1)手动创建
-
根据上面的步骤创建一个 Maven JavaSE 工程
-
手动添加Web项目结构文件(结构和命名固定)
-
修改pom.xml文件打包方式
<!-- 在pom.xml文件中修改 <packaging> --> <packaging>war</packaging>
-
刷新和校验
项目的webapp文件夹出现小蓝点,代表成功!!
(2)插件方式创建(推荐)
-
安装插件JBLJavaToWeb
若没有 install 则点击安装 -
创建一个 Maven JavaSE 工程
-
右键、使用插件补全web项目
二. Maven 核心功能:功能依赖和构建管理
2.1 依赖管理和配置
定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载可能引发的版本冲突问题。
- maven项目信息属性配置和读取:GAVP属性
- 依赖管理和添加:
<dependencies> <!-- 引入具体的依赖包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <!-- 生效范围 - compile :main目录 test目录 - provided:main目录 test目录 - runtime: 打包运行 - test: test目录 --> <scope>runtime</scope> </dependency> </dependencies>
- 依赖版本提取和维护:
<!--声明版本--> <properties> <!--内部制定版本号--> <junit.version>4.11</junit.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <!--引用properties声明版本 --> <version>${junit.version}</version> </dependency> </dependencies>
2.2 依赖冲突
当直接引用或者间接引用出现了相同的jar包! 这时呢,一个项目就会出现相同的重复jar包,这就算作冲突!
- 解决依赖冲突方式:
-
短路优先原则(第一原则)
A—>B—>C—>D—>E—>X(version 0.0.1) A—>F—>X(version 0.0.2) 则A依赖于X(version 0.0.2)。
-
依赖路径长度相同情况下,则“先声明优先”(第二原则)
A—>E—>X(version 0.0.1) A—>F—>X(version 0.0.2) 在<depencies></depencies>中,先声明的,路径相同,会优先选择!
-
2.3 依赖导入失败解决方法
(1)检查网络连接和 Maven 仓库服务器状态。
(2)确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
(3)清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。 ——》 直接在本地仓库中搜索以 .lastUpdated 结尾的文件,删除即可!
2.4 构建管理和插件配置
(1)构建
- 项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程
(2)构建生命周期
打包: mvn clean package
重新编译: mvn clean compile
本地部署: mvn clean install
最终进行构建的是插件,插件配置
<build>
<!-- jdk17 和 war包版本插件不匹配 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
</plugins>
</build>