当前位置: 首页 > news >正文

3.3.Maven-idea集成-配置及创建Maven项目

项目开发中,使用Maven通常不在命令行中操作,而是在idea中集成Maven并使用,在idea中配置Maven环境有两种方案,第一种方案是在当前工程的Maven环境,第二种方案是在全局的Maven环境。


一.配置Maven环境(当前工程):

步骤一:在idea中创建一个空项目

步骤二:配置JDK,进入空项目后,点击右上角的一个类似齿轮的图标->项目结构(Project Structure)->JDK和语言级别都使用11版本(常用的是8/11/17,17向下兼容11),名称和编译器输出不用管->点击右下角"应用(Apply)",再点击"确定(OK)"

步骤三:配置Maven,点击左上角,"文件"->"设置(Settings)"->找到"构建、执行、部署(Build,Execution,Deployment)"->"构建工具(Build Tools)"->Maven,开始配置Maven的安装目录

步骤四:找到"Maven主路径(Maven home path)",点击下拉列表,如果下拉列表中已经自动联想出主路径,直接用该路径即可,没有的话手动选择即可,此时Maven的安装目录处理完毕,"本地仓库(Local repository)"也会自动加载出来("本地仓库"要勾上"重写",本例中"本地仓库"忘勾了)->配置"用户设置文件(User settings file)",点击"重写(Override)",再点击文件夹图标选择配置目录,该目录就是之前Maven安装目录下的conf目录下的settings.xml->点击右下角"应用(Apply)"

步骤五:在Maven目录下点击进入"运行程序(Runner)",需要选择JRE,仍旧选择11版本,点击右下角"应用(Apply)"->点击左侧"编译器(Compiler)"->点击"Java编译器(Java Compiler)"->开始指定当前项目的字节码版本(Project bytecode version),选择11版本->点击右下角"应用(Apply)",再点击"确定(OK)"

至此,当前这个工程与Maven的关联配置就已经配置好了,该配置方式缺点是比较繁琐。


二.配置Maven环境(全局):

配置全局参数的话,就不要打开任何一个项目。

步骤一:点击左上角,"文件"->"关闭项目(Close Project)"->在当前界面中来配置Maven,在该界面中配置的参数并不是针对任何一个工程

步骤二:点击"自定义(Customize)"->点击"所有设置...(All settings...),不同版本的idea可能略有差异"->点击"构建、执行、部署(Build,Execution,Deployment)"->点击"构建工具(Build Tools)"->点击Maven->设置"Maven主路径(Maven home path)"、"用户设置文件(User settings file)"、"本地仓库(Local repository)"(与之前设置"当前工程"类似,"用户设置文件"和"本地仓库"都要勾上"重写",本例中"本地仓库"忘勾了)->点击右下角"应用(Apply)"

步骤三:在Maven目录下点击进入"运行程序(Runner)",需要选择JRE,仍旧选择11版本,点击右下角"应用(Apply)"->点击左侧"编译器(Compiler)"->点击"Java编译器(Java Compiler)"->开始指定当前项目的字节码版本(Project bytecode version),选择11版本->点击右下角"应用(Apply)",再点击"确定(OK)"

至此,全局配置完毕。


三.idea中创建Maven项目:

可以在已有的项目中创建一个模块,创建模块时此时要选择Maven,然后点击Next,接下来需要填写Maven项目的相关信息,包括模块名称(Name)、模块存放路径(Location)、组织名(Groupld)、模块名(Artifactld)、版本号(Version),其中组织名(Groupld)、模块名(Artifactld)、版本号(Version)并称为Maven的坐标(Artifact Coordinates)(新版idea中已经无需手动写Maven的坐标了),填写完毕之后点击Finish,此时就会自动创建一个Maven项目,Maven项目创建完毕之后就可以编写自己的代码了,测试能否正常运行。

步骤一:进入一个项目,点击左上角,"文件(File)"->"新建(New)"->"新模块(Module...)"

步骤二:选择"新建模块"->"名称"根据实际要求命名,本例命名为"maven-project01"->"位置"根据实际需求,本例中要在当前项目下创建Maven,因此"位置"就填写当前项目所在的位置->"语言"根据实际需求,本例选Java->"构建系统"选择Maven->JDK选择11版本->点击"创建"

步骤三(关键:一定要检查并把Maven的依赖、插件放入正确的本地仓库):Maven中很多依赖、插件可以指定存放位置,但最好放在Maven的本地仓库中,本地仓库可以自行指定位置。Maven的依赖、插件的存放位置可以通过点击idea中"m"型的图标进入Maven控制台->点击类似齿轮的图标->点击"Maven设置"来查看Maven的"本地仓库"存放的位置

如上图,此时可以发现Maven主路径、用户设置文件、本地仓库都没有按照预想的来(Maven的依赖、插件最好放在Maven的本地仓库),因此修改为如下(一定要把"用户设置文件"和"本地仓库"勾上"重写"),再点击"应用"并"确定"即可:

步骤四:新创建的Maven项目暂时不能用,需要点击右上角的"信任项目"才能使用,之后就会下载Maven所需要的依赖以及插件

Maven的插件、依赖存放在"本地仓库"指定的地址中,如下图:

至此,Maven项目创建完毕。

成品如下:

如上图,pom.xml配置文件中就配置了当前工程的基本信息,上述图片里第7、8、9行代码就是之前说的组织名(Groupld)、模块名(Artifactld)、版本号(Version),并称为Maven的坐标(Artifact Coordinates),

但此时pom.xml配置文件中并没有指定Maven的两个属性:指定当前Maven项目源码中所使用的JDK版本(下述第2行代码),以及打包时候所使用的JDK版本(下述第3行代码),因此需要手动补上,代码如下(都是11版本):有时会自动生成

<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>

最后再进入Maven控制台"重新加载所有Maven项目"即可,如下图:

接下来看所创建的Maven工程结构:

如上图,之前在"3.1.Maven-课程介绍"提到src下有两个目录,分别是main和test:

  • main目录下存放的是项目的资源->main下还有两个目录,分别是java和resources,java下存放的是java源代码,resources存放的是配置文件
  • test目录下存放的是测试的相关资源->test下应该也有两个目录,分别是java和resources,但此时test下只有java,没有resources,这是因为test下的resources不常用,所以Maven在创建的时候,这个文件夹resources并没有创建出来,如果需要的话,可以在test目录下手动创建一个resources目录:(目录英译为Directory)

如上图,此时自动联想出一个resources,点击该resources并回车即可创建,如下图:


四.测试:

现在编写一个Java代码进行测试,编写的Java代码要放在java目录下,所以要在src->main->java目录下创建项目,如下图:

如上图,com.itheima.HelloWorld是连包带类一起生成,前面的com.itheima就是包名,HelloWorld就是类名,创建结果如下图:

测试代码:

package com.itheima; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello Maven"); } }

运行以及运行结果:

在运行之后,会发现目录里多了一个target文件夹,如下图:

target文件夹存放的就是Java代码编译后产生的字节码文件,如下图:


五.Maven的坐标:

  • groupId指的是Maven项目隶属的组织名称,通常是域名反写,例如com.itheima、cn.ittest
  • artifactId指的是Maven项目的名称,也称为模块名称,这个可以自己定义,需要见名知意
  • version指的是当前Maven项目的版本号

上图中下方两个例子就是通过坐标来定义自己的项目,以及通过这个坐标来引入项目中所需要的依赖。


http://www.jsqmd.com/news/486843/

相关文章:

  • 事务管理
  • 科研图表美化指南:5步搞定Cell同款GO富集双侧柱状图
  • PartNet 标注系统配置参考
  • Unity PhysicsScene多场景物理仿真:精准预测碰撞与轨迹绘制实战
  • Windows11家庭版也能玩转WSL2?手把手教你用WSL2搭建AI开发环境(含显卡驱动配置)
  • ofd.js:纯前端OFD解析技术解决方案
  • 如何借助智能工具实现跨国协作中的文档效率提升?
  • Python入门实战:调用StructBERT模型完成你的第一个文本匹配项目
  • Vue3中defineProps(定义onSave)与defineEmits(定义save)造成命名冲突
  • Wan2.1-umt5与ComfyUI工作流结合:探索文本驱动的复杂自动化流程
  • 实测AI读脸术:年龄性别识别效果展示,附详细使用教程
  • 智能翻译插件:突破语言壁垒的网页阅读解决方案
  • 基于庐山派K230开发板的手部关键点检测与手势识别实战
  • CAN总线安全新思路:为什么说VoltageIDS的电气特性检测比传统方案更靠谱?
  • 南北阁Nanbeige4.1-3B与Python开发:从环境搭建到项目实战
  • GLM-OCR与Dify平台集成:打造零代码AI工作流应用
  • 实战openspec
  • Substance Painter 磨损纹理:一键生成与细节调整
  • ACE-Step应用解析:如何将AI音乐生成集成到你的应用系统中?
  • 深入解析Arm Cortex-A715:架构特性与性能优化实践
  • 3大技术突破!ofd.js如何重塑医疗教育行业文档处理
  • DeepStack算法解析:从游戏树到神经网络实战
  • Audio Pixel Studio语音合成实战:API接口封装与Postman调试全流程
  • ChipWhisperer入门指南:从硬件连接到Jupyter Notebook实战(附常见问题解决)
  • Yi-Coder-1.5B数学能力测试:程序辅助解决奥数难题
  • 从音频原理到实战:乐鑫 esp-sr SDK 核心算法与应用场景解析
  • OAuth2.0实战:从授权码到安全集成的完整指南
  • Win11笔记本RTX3070Ti显卡实战:3D Gaussian Splatting环境配置避坑指南
  • 多语言语义对齐实验:NLP-StructBERT在中英句子相似度上的表现
  • Halcon实战:angle_lx和angle_ll算子的5个工业视觉检测应用场景