全方面熟悉Maven项目管理工具(五)教你IDEA创建Maven基本项目、导入工程和模块,并为你讲解Maven的生命周期

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

  1. 新建项目,绑定git
    • 将远程的git文件目录拷贝到项目中即可
  2. 修改文件,使用IDEA操作git
    • 添加到暂存区
    • commit提交
    • push到远程仓库
  3. 远程提交

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。

  1. pre-clean:执行清理前需要完成的工作

  2. clean:清理上一次构建生成的文件

  3. post-clean:执行清理后需要完成的工作

7.2.2 default 生命周期:构建项目,重要的phase如下。

  1. validate:验证工程是否正确,所有需要的资源是否可用。
  2. compile:编译项目的源代码。
  3. test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
  4. Package:把已编译的代码打包成可发布的格式,比如jar。
  5. integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
  6. verify:运行所有检查,验证包是否有效且达到质量标准。
  7. install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
  8. Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

7.2.3site 生命周期:建立和发布项目站点,phase如下

  1. pre-site:生成项目站点之前需要完成的工作

  2. site:生成项目站点文档

  3. post-site:生成项目站点之后需要完成的工作

  4. 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+树的实现原理阐述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896260.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙网络编程系列28-服务端证书锁定防范中间人攻击示例

1. TLS通讯中间人攻击及防范简介 TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任&#xff0c;如果CA证书签发机构被入侵&#xff0c;或者设备内置证书被篡改&#xff0c;都会导致TLS握手环节面临中间人攻击的风险。其实&#xff0c;这种风险被善意利用的情况还是很…

Linux基础项目开发day06:量产工具——业务系统

文章目录 前言一、流程代码框架1、业务系统框架流程2、主页面流程图3、main.c实现流程 二、处理配置文件1、配置文件是啥&#xff1f;config.h 2、怎么处理配置文件&#xff1f;config.c 三、生成界面1、计算每个按钮的Region2、逐个生成按钮画面->生成页面 四、读取输入事件…

记录一次hiveserver2卡死(假死)问题

问题描述 给开发人员开通了个账号&#xff0c;连接hive进行查询&#xff0c;后来发现&#xff0c;hive服务有时候会卡死&#xff0c;查询不了&#xff0c;连不上&#xff08;所有账号/客户端都连不上hive&#xff09;&#xff0c;但在chd里面看监控&#xff0c;服务器资源状态…

物联网之超声波测距模块、arduino、esp32

MENU 原理硬件电路设计软件程序设计 原理 超声波是一种频率高于20000Hz的声波&#xff0c;功率密度为p≥0.3W/cm&#xff0c;它的方向性好&#xff0c;反射能力强&#xff0c;易于获得较集中的声能。超声波用于许多不同的领域&#xff0c;比如检测物体和测量距离&#xff0c;清…

Unity 2d UI 实时跟随场景3d物体

2d UI 实时跟随场景3d物体位置&#xff0c;显示 3d 物体头顶信息&#xff0c;看起来像是场景中的3dUI&#xff0c;实质是2d UIusing System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using UnityEngine.UI; /// <summary>…

【JS】无法阻止屏幕滚动

监听滚轮事件&#xff0c;阻止默认行为&#xff0c;但未生效&#xff0c;且控制台报错。 window.addEventListener(wheel, (e) > {e.preventDefault(); })这是因为现代浏览器使用 Passive 事件监听器&#xff0c;默认启用了 passive 模式以确保性能&#xff0c;不会调用 pr…

Cancer Cell|最新发表的单细胞成纤维细胞分析代码,速来学习!!!

简介 成纤维细胞在维持组织稳态、应对炎症和纤维化状况、帮助伤口愈合以及促进癌症进展的复杂舞蹈中起着关键作用。在癌症领域&#xff0c;成纤维细胞已成为肿瘤微环境&#xff08;TME&#xff09;中的核心人物&#xff0c;发挥着多方面的作用。这些作用包括细胞外基质&#xf…

【深度学习实战—12】:基于MediaPipe的手势识别

✨博客主页&#xff1a;王乐予&#x1f388; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 &#x1f63a;一、Med…

Java设计模式梳理:行为型模式(策略,观察者等)

行为型模式 行为型模式关注的是各个类之间的相互作用&#xff0c;将职责划分清楚&#xff0c;使得我们的代码更加地清晰。 策略模式 策略模式太常用了&#xff0c;所以把它放到最前面进行介绍。它比较简单&#xff0c;我就不废话&#xff0c;直接用代码说事吧。 下面设计的…

电能表预付费系统-标准传输规范(STS)(16)

6.3.9 MPL: MaximumPowerLimit&#xff08;最大功率限制&#xff09; The maximum power limit field is a 1 6-bit field that indicates the maximum power that the load may draw, in watts. Calculation of this field is identical to that of the TransferAmount field…

【JavaEE】——自定义协议方案、UDP协议

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;自定义协议 1&#xff1a;自定义协议 &#xff08;1&#xff09;交互哪些信息 &…

数据库设计与开发—初识SQLite与DbGate

一、SQLite与DbGate简介 &#xff08;一&#xff09;SQLite[1][3] SQLite 是一个部署最广泛、用 C 语言编写的数据库引擎&#xff0c;属于嵌入式数据库&#xff0c;其作为库被软件开发人员嵌入到应用程序中。 SQLite 的设计允许在不安装数据库管理系统或不需要数据库管理员的情…

C++中的继承(1)

1.继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许我们在保持原有类特性的基础上进行扩展&#xff0c;增加⽅法(成员函数)和属性(成员变量)&#xff0c;这样产生新的类&#xff0c;称派生类&#xff08;也被称为子类&…

Vue 3集成海康Web插件实现视频监控

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;组件封装篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:Vue 3集成海康Web插件实现视频监控 引言 最近在项目中使用了 Vue 3 结合海康Web插件来实…

Django项目创建

安装 pip install django 创建项目 首先打开powershell打开项目与创建到的文件夹 django-admin startproject django_demo01 django-admin startproject 项目名 多出了一个django_demo01的文件夹&#xff0c;这就是我们的项目了 打开项目文件夹&#xff0c;发现一个文件和…

必读推荐:掌握大模型应用的精华书籍,非常详细收藏我这一篇就够了

在这个信息爆炸的时代&#xff0c;人工智能正以前所未有的速度和规模渗透到我们生活的方方面面。其中&#xff0c;大模型应用作为 AI 领域的一大亮点&#xff0c;不仅在学术界引起广泛关注&#xff0c;更在工业界展现出巨大的应用潜力。从自然语言处理到图像识别&#xff0c;从…

最新必应Bing开户条件、流程及注意事项介绍

有效的广告推广对于企业提升品牌影响力和市场占有率至关重要。微软旗下的必应Bing搜索引擎&#xff0c;作为全球知名的搜索平台之一&#xff0c;为企业提供了精准、高效的广告推广服务。那么&#xff0c;如何在必应上开设广告账户呢&#xff1f;下面将详细介绍必应广告开户的条…

springboot 整合 快手 移动应用 授权 发布视频 小黄车

前言&#xff1a; 因快手文档混乱&#xff0c;官方社区技术交流仍有很多未解之谜&#xff0c;下面3种文档的定义先区分。 代码中的JSON相关工具均用hutool工具包 1.快手 移动双端 原生SDK 文档https://mp.kuaishou.com/platformDocs/develop/mobile-app/ios.html 2.快手 Api 开…

探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士

在现代社会&#xff0c;不间断电源&#xff08;UPS&#xff09;系统已成为保障关键设备和数据安全的关键设施&#xff0c;广泛应用于企业数据中心、家庭电子设备等场景。UPS能在电力中断或波动时提供稳定电力&#xff0c;确保设备持续运行。而在这套系统中&#xff0c;光耦&…

深入理解AQS:并发编程中的利器及其在业务场景中的应用

1. 什么是AQS&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff1f; AQS&#xff0c;全称为AbstractQueuedSynchronizer&#xff0c;是Java并发包中核心的基础框架&#xff0c;用于构建锁和同步器。它是java.util.concurrent.locks包中的基础组件&#xff0c;为多个…