如何在IDEA中使用Maven构建Java项目?Maven的使用详细解读

news2024/11/28 9:39:41

文章目录

  • 1. 前言
  • 2. IDEA 中配置 Maven 环境
  • 3. Maven 的坐标问题
  • 4. IDEA 中创建 Maven 项目
  • 5. IDEA 中导入 Maven 项目
  • 6. 安装插件
  • 7. 依赖管理
  • 8. 依赖范围
  • 6. 总结
  • Java编程基础教程系列

1. 前言

前面在如何使用 Maven 构建 Java 项目一文中,我们一直在命令行中执行构建项目生命周期的命令,例如执行 mvn compile 命令进行项目的编译。

在 Java 项目的开发中,我们肯定会使用大型的 IDE,并且在这些 IDE 中使用Maven 管理和构建项目,这里使用 idea 为例,讲解如何在集成开发环境中使用 Maven 构建 Java 项目。

2. IDEA 中配置 Maven 环境

要在 idea 中使用 Maven 构建 Java 项目,首先要在 idea 中配置 Maven 环境。

在 idea 中点击左上角 File / Settings :

image-20230126143254468

在设置的搜索框搜索 Maven:

image-20230126143358521

主要配置以下三项,分别是本地 Maven 安装路径,Maven 文件目录下的conf / settings.xml 文件以及之前配置的本地仓库路径。

image-20230126143417033

配置完成后一定点击 Apply,再点 OK,小编在初学时这里曾遇到过很多的问题,总结来说还是要多尝试,遇到解决不了的问题一定要及时上网搜索解决哦。

3. Maven 的坐标问题

在创建 Maven 项目之前,一定要了解 Maven 的坐标,Maven 使用标准坐标引入项目中依赖的第三方资源。下面我们先了解 Maven 的坐标。

什么是坐标?

Maven 使用坐标做为资源的唯一标识,在配置文件中使用坐标引入资源。解决了之前下载 jar 包,导入 jar 包等资源操作繁琐的问题。

Maven的坐标是怎么组成的?

  • groupId :当前 Maven 项目隶属的组织,通常使用域名反写,例如 com.baidu
  • arifactId :当前 Maven 项目的名称,通常使用模块名称
  • version :当前 Maven 项目的版本号

当然后面还会往坐标中添加<scope>标签用来指定依赖范围,例如:

image-20230126144932337

4. IDEA 中创建 Maven 项目

使用 idea 创建一个 Maven 项目,可以直接创建一个项目,也可以先创建一个空项目,然后创建一个 Maven 模块,这里推荐使用第二种方式。

首先创建一个空项目,并指定项目存放路径和项目名称。

image-20230126145307994

在项目中点击左上角 File / Project Structure ,创建新模块,选择 Maven 模板,此时指定模块名称,存放路径,本地JDK,在 ArcheType 中选择 quickstar , 如图:

image-20230126145539230

选择完模块的信息以后,下拉找到 Advanced Settings ,这里设置当前 Maven 项目的坐标信息,如图:

image-20230126145832013

点击 create 开始创建,这里的过程可能比较慢,甚至比你想象的更慢,安心等待,创建成功以后,会自动生成一个 Maven 项目的模板,此时可能缺少某些文件目录,按照需求补齐。例如在源代码文件目录和测试代码文件目录都没有resources 配置文件目录,可手动添加,如图:

5. IDEA 中导入 Maven 项目

打开 idea 右侧的 Maven 面板,找到对应的项目文件目录,双击项目的 pom.xml 文件即可把该项目导入到 idea 中。

在这里插入图片描述
如果 idea 右侧没有Maven 面板,勾选 View / Appearance / Tool Window Bars 即可,小编使用的是企业版 idea,可能不同版本效果不同。

6. 安装插件

安装 Maven Helper 插件,可以帮助我们快速执行 Maven 构建项目生命周期的命令,例如 compile 编译。

点击 File / Settings / Plugins ,搜索 Maven Helper,如图:

image-20230126150927951

重启 idea ,此时我们便可以选中项目,右键执行相关的命令,如图:

image-20230126151358515

7. 依赖管理

Maven 使用标准坐标的方式引入项目中依赖的第三方资源,例如 jar 包,插件等,那么具体怎么操作呢?

使用坐标引入第三方依赖具体分为以下四步:

  1. 在 项目核心配置文件 pom.xml 中编写<dependencies>标签
  2. <dependencies>标签中使用<dependency>标签引入坐标
  3. 定义坐标信息:groupId,artifactId,version 等
  4. 刷新,使坐标信息生效

image-20230126152028284

我们还可以快捷添加坐标,在项目的 pom.xml 文件中按快捷键 Alt + insert ,选择 Add Dependency ,接下来搜索需要添加的坐标信息,双击添加并点击刷新按钮即可添加成功并生效。

image-20230126152419145

上面两种引入坐标的方式都需要手动刷新,你也可以选择坐标自动生效,点击 File / Settings/Build Tools ,选择 Any changes 。

image-20230126152703025

8. 依赖范围

我们可以通过<scope>标签来设置坐标的依赖范围,可以选择的范围有编译环境,测试环境和运行环境,坐标的默认依赖范围为 compile 值。

例如,给 junit 依赖设置为测试环境有效,其他环境不能使用,示例:

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
</dependency>

<scope>标签的详细取值:

依赖范围编译测试运行
compileyyylogback
testyJunit
providedyyservlet-api
runtimeyyjdbc
systemyy存储在本地的jar包

6. 总结

初学者在这部分一定会遇到各种各样的问题,其中大部分都是由于版本问题造成的,例如 JDK 版本,idea 版本,Maven 版本等。建议多尝试几遍就能熟练,遇到问题一定要及时解决。

例如小编曾经在这部分就遇到各种当时水平难以处理的问题,项目中无法生成 src 源代码目录,idea 中报错不支持该版本,Maven 中报错不支持源选项等各种问题。不要放弃,多尝试问题总会解决。另外 Java 版本建议使用 JDK 1.8。

本节详细探讨了 Maven 构建 Java 项目的流程以及构建项目生命周期中使用的各种命令,我们下期见。


Java编程基础教程系列

JDBC快速入门,如何使用JDBC操作数据库?

如何使用JDBC操作数据库?JDBC API的使用详细解读

什么是数据库连接池?Druid(德鲁伊)连接池的使用详细解读

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW什么是实时操作系统(RTOS)

LabVIEW什么是实时操作系统(RTOS)一般而言&#xff0c;操作系统的任务是管理计算机的硬件资源和应用程序。实时操作系统会执行这些任务&#xff0c;但是运行时间精度和可靠度都极高。在实际应用中&#xff0c;有的系统失常代价高昂&#xff0c;甚至会引起安全事故。这时&#x…

成为提示专家,AI艺术杂志:AI Unleashed 第一期

shadow最近发现了一期AI艺术的杂志。名称叫 AI Unleashed&#xff0c;是一本深入探索 AI 和想象力的杂志。每期杂志都将填满精彩的 AI 艺术&#xff0c;激发你的好奇心&#xff0c; 让你更加了解最新的 AI 技术&#xff0c;以及它如何改变现有工作流和我们对艺术和技术的看法。…

LVS+keepalived(双主)+Nginx实现高可用负载均衡

#为什么采用双主架构&#xff1a; 单主架构只有一个keepalived对外提供服务&#xff0c;该主机长期处于繁忙状态&#xff0c;而另一台主机却很空闲&#xff0c;利用率低下 #双主架构的优点&#xff1a; 即将两个或以上VIP分别运行在不同的keepalived服务器&#xff0c;以实现…

C++11使用线程类thread的方法

C11 之前&#xff0c;C 语言没有对并发编程提供语言级别的支持。如果需要使用线程&#xff0c;windows系统需要使用CreateThread函数创建线程&#xff0c;而linux需要使用pthread库使用线程。C11 中增加了线程以及线程相关的类&#xff0c;很方便地支持了并发编程。由于可以跨平…

活动星投票十大商业品牌网络评选微信的投票方式线上免费投票

“十大商业品牌”网络评选投票_线上系统免费投票_功能齐全的视频投票_在线投票免费小程序用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投…

CV学习笔记-VGG

VGG 1. 常见的卷积神经网络 VGG属于一种经典的卷积神经网络结构&#xff0c;其出现在AlexNet之后&#xff0c;由于AlexNet的突破证实了卷积神经网络的可行性&#xff0c;VGG的思路主要是将网络层数加深&#xff0c;从某种意义上说&#xff0c;网络层数的加深可以粗略地认为考虑…

编译原理学习笔记14——属性文法与语法制导翻译1

编译原理学习笔记14——属性文法与语法制导翻译114.1 属性文法14.2 属性计算14.1 属性文法 属性文法 综合属性 自下而上传递信息语法规则&#xff1a;根据右 部候选式中的符号 的属性计算左部被 定义符号的综合属性语法树&#xff1a;根据子结 点的属性和父结点 自身的属性…

【日常系列】LeetCode《30·动态规划总结》

动态规划总结 线性动态规划问题总结 打家劫舍总结 最大子数组和总结 dp[i] 依赖于前面一个或者两个状态 dp[i] 依赖于前面多个状态 注意&#xff1a;子序列可以不连续 dp[i] 带有一个或者多个维度 输入为两个数组或者两个字符串 lc 10【剑指 19】【top100】&#xff1a;正…

【LeetCode每日一题:2309. 兼具大小写的最好英文字母~~~模拟+Hash表+贪心】

题目描述 给你一个由英文字母组成的字符串 s &#xff0c;请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母&#xff0c;则返回一个空字符串。 最好 英文字母的大写和小写形式必须 都 在 s 中出现。 英文字母 b 比另一个英文字母 …

Java生成微信小程序二维码,5种实现方式,一个比一个简单

文章目录前言先看官网一、JDK自带的URLConnection方式二、Apache的HttpClient方式三、okhttp3方式四、Unirest方式五、RestTemplate方式其它细节getAccessToken构建参数mapbyte[]数组源码下载前言 先介绍一下项目场景&#xff0c;主要是通过微信小程序二维码裂变分享&#xff…

一时重构一时爽,一直重构一直爽

笔者&#xff08;后台技术汇&#xff09;恭祝各位大佬&#xff1a;2023年春节快乐&#xff0c;兔年祥瑞。距离上次更新&#xff0c;已经过去5个月有余了&#xff0c;有小伙伴疑惑笔者是不是删库跑路了..其实不是&#xff0c;这段时间是在参加一次比较大的项目重构&#xff08;目…

学习笔记 —— python代码耗时及内存占用测试方法

1、手写耗时测试 先看结果; 主要有三种方法&#xff0c;各自的时钟间隔如下&#xff1a; time.time() timeit time.time_ns() ( time is outputted in ns!). 可见方法2&#xff0c;即timeit 的时钟间隔最短。 注&#xff1a;最后一个是以ns为单位的&#xff0c;前两个是…

二叉树的概念与结构

文章目录前言一、树的概念及结构1.树的概念2.树的相关概念3.树的表示4. 树在实际中的运用二、二叉树概念及结构1.概念2.特殊的二叉树5.二叉树的性质6.二叉树的存储结构(1).顺序存储&#xff08;2&#xff09;.链式存储结语前言 因为二叉树的知识点太多&#xff0c;一篇文章讲不…

《真象还原》读书笔记——第一章 部署工作环境

环境&#xff1a; 由于平时使用 windows 系统 所以 linux 环境 使用了 linux子系统。 $ cat /proc/version Linux version 4.4.0-22000-Microsoft (MicrosoftMicrosoft.com) (gcc version 5.4.0 (GCC) )1.1 工欲善其事 必先利其器 操作环境很重要呀。 1.2 编译器 GCC: gc…

Java 23种设计模式(8.结构型模式-桥接模式)

结构型模式-桥接模式 代码分析 类图 代码 public interface Implementor {void operation(); }public class ConcreteImplementorA implements Implementor{Overridepublic void operation() {System.out.println("A");} }public class ConcreteImplementorB imple…

(Java高级教程)第四章必备前端基础知识-第二节3:CSS盒模型和浮动

文章目录一&#xff1a;盒模型&#xff08;1&#xff09;border&#xff08;2&#xff09;padding&#xff08;3&#xff09;margin二&#xff1a;flex布局一&#xff1a;盒模型 盒模型&#xff1a;在HTML中&#xff0c;每个标签&#xff08;或元素&#xff09;相当于是一个盒…

DaVinci:色彩匹配

z调色页面&#xff1a;色彩匹配Color&#xff1a;Color Match色彩匹配 Color Match调板是专业的一级调色工具&#xff0c;专门用于对视频图像进行精准的校色还原。色彩匹配时&#xff0c;先定位到视频中持有色卡的画面。在检视器左下角快捷菜单中选择“色卡” Color Chart工具&…

C 语言零基础入门教程(十二)

C enum(枚举) 枚举是 C 语言中的一种基本数据类型&#xff0c;它可以让数据更简洁&#xff0c;更易读。 枚举语法定义格式为&#xff1a; enum 枚举名 {枚举元素1,枚举元素2,……};接下来我们举个例子&#xff0c;比如&#xff1a;一星期有 7 天&#xff0c;如果不用枚举&…

【Linux】vim编辑器的使用

文章目录vim的基本概念vim指令集复制粘贴撤销、剪切光标定位vim的基本概念 vim是一款多模式的编辑器&#xff0c;在我们常用的模式有3~5种。分别是命令模式&#xff08;command mode&#xff09;、插入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08; last lin…

【PHP 随记】—— ThinkPHP 配置数据库

&#x1f449;总目录&#x1f448;\large\colorbox{skyblue}{&#x1f449;总目录&#x1f448;}&#x1f449;总目录&#x1f448;​ 文章目录1、数据库连接及导入① 数据库连接② 数据库导入2、配置 ThinkPHP 数据库连接信息① 配置连接信息1、数据库连接及导入 ① 数据库连…