五、IDEA中的Maven操作
5.1 创建Maven项目
创建Maven项目 |
---|
指定项目名称和项目位置 |
5.1.1 节点配置解析
节点 | 详细描述 |
---|---|
groupId | 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团 com.company.bank 拥有所有银行相关项目。 |
artifactId | 这是项目的 ID。这通常是项目的名称。 例如,consumer-banking 。 除了 groupId 之外,artifactId 还定义了 artifact 在存储库中的位置。 |
version | 这是项目的版本。与 groupId 一起使用,artifact 在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0 ,com.company.bank:consumer-banking:1.1
|
5.1.2 语义化版本号
- 规则:正式稳定版本从v0.1.0开始,配套软件公共API
- 注意:正式版发布后不可修改,只能在下一个版本中发布新内容
版本类型 | 详细描述 |
---|---|
主要版本 | 当你做了不兼容的API 修改(正式版发布、架构升级) |
次要版本 | 当你做了向下兼容的功能性新增(功能增减) |
修订版本 | 当你做了向下兼容的问题修正(BUG修复、查缺补漏) |
5.1.3 扩展(SNAPSHOT)
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上**-SNAPSHOT** 即可(注意这里必须是大写),如下:
<groupId>com.mylifes1110</groupId> <artifactId>firstmaven</artifactId> <version>0.1-SNAPSHOT</version> <packaging>jar</packaging>
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,会覆盖老的快照版本,而在使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。
在maven的约定中,依赖的版本分为两类——SNAPSHOT和RELEASE。SNAPSHOT依赖泛指以-SNAPSHOT为结尾的版本号,例如1.0.1-SNAPSHOT。除此之外,所有非-SNAPSHOT结尾的版本号则都被认定为RELEASE版本,即正式版,虽然会有beta、rc之类说法,但是这些只是软件工程角度的测试版,对于maven而言,这些都是RELEASE版本。所以一般我们需要上传到发布仓库的时候可以在<version>标签内直接写版本即可,不需要再添加任何标签!
5.2 IDEA关联Maven
在IDEA中关联本地安装的maven,后续就可以通过idea来使用maven管理项目(我使用的aliyun仓库)
在全局设置中关联Maven |
---|
Maven项目展示 (缺少test包下resources文件夹) |
5.3 IDEA创建测试包下resources文件夹
我们在使用IDEA创建Maven项目时,IDEA是没有帮我们创建test包下的resources文件夹。但是Maven规范中是包含这个文件夹的,所以我们需要手动创建并声明该文件夹
创建存放测试配置的文件夹 |
---|
指定文件夹名称 (下拉框选择resources文件夹创建即可) |
文件目录结构展示 (完整Maven规范目录结构) |
5.4 Maven项目目录结构解析
注意: 项目中的创建包、创建类、执行,都与普通项目无异
目录名称 | 描述 |
---|---|
src/main/java | 用于创建包,存放编写的源代码(.java文件) |
src/main/resources | 存放项目中所需配置文件,比如:c3p0.properties |
src/test/java | 用于创建包,存放编写的测试代码(.java文件) |
src/test/resources | 存放项目中测试代码所需配置文件 |
根目录/pom.xml | 项目对象模型(project object model),maven项目核心文件,其中定义项目构建方式,声明依赖等 |
5.5 Maven项目类型
根据项目类型,在
pom.xml
文件中添加相应配置。
项目类型分为Java项目和JavaWeb项目
如果项目为Java项目需要在<project>标签内添加
<packaging>jar</packaging>
如果项目为JavaWeb项目需要在<project>标签内添加
<packaging>war</packaging>
注意: Maven可以根据项目类型来确定打包方式,比如Java项目打包成jar包 、JavaWeb项目打包成war包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mylifes1110</groupId> <artifactId>firstmaven</artifactId> <version>1.0-SNAPSHOT</version> <!-- 设置项目类型,打包方式: 如果为Java项目则使用jar 如果为JavaWeb项目使用war --> <packaging>jar</packaging> <!-- <packaging>war</packaging>--> </project>