1. IDEA 配置 Maven
本身 IDEA 就可以在一个项目中创建多个子模块。
1.1 创建父工程
如果要构建不同的 Maven 工程类型,可以勾选【从原型创建】在列表中选择工程类型
1.2 IDEA 配置 Maven 本地仓库
- 在设置中前往:构建、执行、部署 >> 构建工具 >> Maven
- 在 Maven 项目中,右侧 Maven 小列表中,点击扳手图标直接来到该页面
当 Maven 主路径更改后,可以自行配置【用户设置文件】和【本地存储库】;
1.3 创建 Java 模块工程
当配置完子工程后,IDEA 自动在父工程的 pom.xml 中配置聚合
<!-- 父工程自动完成聚合操作 -->
<modules>
<module>pro05-module.java</module>
</modules>
2. IDEA 中执行 Mave 的三种方式
2.1 第一种:纯 UI 执行
在右侧 Maven 列表中使用【生命周期】或【插件】中的插件,可以达到执行 mvn 指令的方式
2.2 使用 mvn 辅助
在右侧 Maven 列表中点击 “M” 图标,在输入框中输入命令也可以达到执行 mvn 指令的方式
- 这种方式,还可以在指令后面添加参数
2.3 项目 cmd 执行
在左侧项目目录中,右键打开列表选择cmd
3. IDEA 创建 Web 工程
3.1 模板创建 Web 工程
3.1.1 选择模板
- 新创建项目或者创建模块
- 在创建 Maven 模板时,选择 webapp。然后下一步…下一步…完成
3.1.1 配置项目结构
当 web 项目创建完毕后,我们可以看到 web.xml 的配置版本是比较低的,所以这里删掉这个由模板生成的 web.xml 自己手动配置一个新版本的 web.xml
来到【项目结构.Facet】中,找到创建的 Web 项目的配置,将 web.xml 进行移除
然后再点击添加即可。
如果xml文件的版本已经足够高并且没有这方面需求的可以忽略
3.2 由 Java 工程转变成 Web 工程
跟创建普通的 Maven Java 工程一样,只不过在项目结构的 Facet 中添加 web 项目结构以及对应的 web.xml 罢了
4. 工程导入
Maven 工程除了自己创建的,还有很多情况是别人创建的。而为了参与开发或者是参考学习,我们都需要导入到 IDEA 中。
4.1 来自版本控制系统
目前我们通常使用的是 Git(本地库)+ 码云(远程库)的版本控制系统.
4.1.1 在IDEA中集成Git
- 新建项目,绑定git
- 将远程的git文件目录拷贝到项目中即可
- 修改文件,使用IDEA操作git
- 添加到暂存区
- commit提交
- push到远程仓库
- 远程提交
4.2 来自工程目录
直接使用 IDEA 打开工程目录即可。
请注意打开的根目录必须是在pom.xml文件的那一级
如果IDEA没有默认选择出pom文件,还需要自己右键pom文件进行添加Maven项目
操作
5. 导入模块
5.1 实际情景
在实际开发中,通常会忽略模块(也就是module)所在的项目仅仅导入某一个模块本身。
这么做很可能是类似这样的情况:比如基于 Maven 学习 SSM 的时候,做练习需要导入老师发给我们的代码参考
5.2 导入模块
先将带有pom文件的pom项目文件夹放置项目文件夹中,然后导入该文件夹为模块,选择Maven,等IDEA加载过后就完成了
6. 生命周期
7.1 作用:
为了让构建过程自动化完成,Maven 设定了三个生命周期,生命周期中的每一个环节对应构建过程中的一个操作
7.2 三个生命周期:
7.2.1 clean 生命周期:清理项目,包含三个phase。
-
pre-clean:执行清理前需要完成的工作
-
clean:清理上一次构建生成的文件
-
post-clean:执行清理后需要完成的工作
7.2.2 default 生命周期:构建项目,重要的phase如下。
- validate:验证工程是否正确,所有需要的资源是否可用。
- compile:编译项目的源代码。
- test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
- Package:把已编译的代码打包成可发布的格式,比如jar。
- integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
- verify:运行所有检查,验证包是否有效且达到质量标准。
- install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
- Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
7.2.3site 生命周期:建立和发布项目站点,phase如下
-
pre-site:生成项目站点之前需要完成的工作
-
site:生成项目站点文档
-
post-site:生成项目站点之后需要完成的工作
-
site-deploy:将项目站点发布到服务器
7.3 特点
- 前面三个生命周期彼此是独立的
- 在任何一个生命周期内部,执行任何一个具体环节的操作,都是从本周期最初的位置开始执行,直到指定的地方。
Maven 之所以这么设计其实就是为了提高构建过程的自动化程度:让使用者只关心最终要干的即可,过程中的各个环节是自动执行的。
8. 插件
Maven 的核心程序仅仅负责宏观调度,不做具体工作。具体工作都由 Maven 插件完成的。
例如编译就是由 maven-compiler-plugin-3.11.jar
完成的
9. 目标
一个插件可以对应多个目标,而每一个目标都和生命周期中的某一个环节对应。
Default 生命周期中由 compile 和 test-compile 两个和编译相关的环节,这两个环节对应 compile 和 test-compile 两个目标,而这两个目标都是由 maven-compile-plugin-3.1.jar
插件来执行的
10. 仓库
- 本地仓库:在当前电脑上,为电脑上所有的 Maven 工程服务
- 远程仓库:需要联网
- 局域网:我们自己搭建的 Maven 私服,例如使用 Nexus 技术
- Internet:
- 中央仓库:在互联网中保存某样数据的地方,可以由访问者拿取仓库的数据
- 镜像仓库:内容和中央仓库保持一致,但是能够分担中央仓库的负载,同时让用户能够就近访问提高下载速度,例如:Nexus、aliyun
建议:不要中央仓库和阿里云镜像混淆,否则 jar 包来源不纯,彼此冲突
11. 😊前篇快递
- 认识Maven、Maven如何安装?
- 坐标、pom.xml文件的解读!
- 认识mvn的各类构建命令并创建、打包Web工程
- 带你认识Maven的依赖、继承和聚合都是什么!有什么用?
12. 👉好文相推
- 2-3树思想与红黑树的实现与基本原理
- ElasticSearch8.7 搭配 SpringDataElasticSearch5.1 的使用
- B树和B+树的实现原理阐述