Maven基本使用以及IDEA中配置使用的详细介绍

news2024/11/17 17:44:40

文章目录

  • Maven
    • Maven基本介绍
    • Maven基本使用
    • IDEA配置Maven
      • IDEA配置Maven
      • Maven坐标详解
      • IDEA创建Maven项目
      • IDEA导入Maven项目
    • Maven依赖管理

Maven

Maven基本介绍

Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档

官网链接: http://maven.apache.org/

Maven是专门用于管理和构建Java项目的工具,它的主要功能有

提供了一套标准化的项目结构

  • 由于不同的编辑器创建项目的目录结构各不相同, 不够通用;
  • Maven提供了一套标准化的项目结构,所有IDE使用Maven构建的项目结构完全一样,所有IDE创建的Maven项目可以通用

在这里插入图片描述

提供了一套标准化的构建流程(编译,测试,打包,发布……)

  • Maven提供了一套简单的命令来完成项目构建

在这里插入图片描述

提供了一套依赖管理机制:

  • 赖管理其实就是管理你项目所依赖的第三方资源 (jar包、插件…)
  • Maven 使用标准的坐标配置来管理各种依赖; 只需要简单的配置就可以完成依赖管理

在这里插入图片描述

Maven 模型:

项目对象模型 (Project Object Model)

依赖管理模型(Dependency)

插件(Plugin)

在这里插入图片描述

仓库分类

本地仓库:自己计算机上的一个目录

中央仓库:由Maven团队维护的全球唯一的仓库

  • 地址https://repo1.maven.org/maven2/

远程仓库(私服):一般由公司团队搭建的私有仓库

  • 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包

如果有,则在项目直接引用;

如果没有,则去中央仓库中下载对应的jar包到本地仓库。

  • 如果搭建了远程仓库, jar包的查找仓库的顺序为

本地仓库 --> 远程仓库 --> 中央仓库

Maven基本使用

Maven有下面几个常用命令:

mvn compile :编译, 会生成一个target文件夹, 文件夹中是编译源文件src的class项目文件

mvn clean:清理, 删除target文件夹

mvn test:测试, 自动执行java项目的测试类

mvn package:打包, 将java的源代码打包成字节码的jar包

mvn install:安装, 将当前java项目安装到本地仓库

Maven 生命周期:

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件

Maven 对项目构建的生命周期划分为3套

  • clean:清理工作
  • default:核心工作(默认生命周期),例如编译,测试,打包,安装等
  • site:产生报告,发布站点等

同一生命周期内,执行后边的命令,前边的所有命令会自动执行

在这里插入图片描述

Maven生命周期的命令其实是很多的, 只不过我们常用的就只有上面几个

在这里插入图片描述

IDEA配置Maven

IDEA配置Maven

选择 IDEA中 File --> Settings

在这里插入图片描述

搜索 maven

在这里插入图片描述

设置 IDEA 使用本地安装的Maven,并修改配置文件路径

在这里插入图片描述

Maven坐标详解

什么是坐标?

Maven 中的坐标是资源的唯一标识

使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成:

groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.abc)

artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

version:定义当前项目版本号

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>

IDEA创建Maven项目

1.首先创建模块,选择Maven,点击Next

在这里插入图片描述

2.填写模块名称,坐标信息,点击finish,创建完成

在这里插入图片描述

3.编写 HelloWorld,并运行

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

IDEA导入Maven项目

1.选择右侧Maven面板,点击 + 号

在这里插入图片描述

2.选中要导入对应项目的pom.xml文件,双击即可

在这里插入图片描述

3.如果没有Maven面板,选择 View --> Appearance --> Tool Window Bars, 可以打开Maven面板

在这里插入图片描述

Maven依赖管理

使用坐标导入jar包:

1.在 pom.xml 中编写 <dependencies> 标签

2.在 <dependencies> 标签中 使用 <dependency> 引入坐标

3.定义坐标的 groupId,artifactId,version

4.点击刷新按钮,使坐标生效

<dependencies>
  <!--  导入测试jar包  -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>

  <!--  导入mysql驱动jar包  -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
  </dependency>
</dependencies>

使用坐标导入jar包 - 快捷方式:

1.在 pom.xml 中 按 alt + insert,选择 Dependency

2.在弹出的面板中搜索对应坐标,然后双击选中对应坐标

3.点击刷新按钮,使坐标生效

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

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

相关文章

GAMES101学习笔记——光栅化

一&#xff1a;什么是光栅化&#xff08;Rasterization&#xff09; 把空间里的物体画在屏幕上。 屏幕由一个个阵列排布的像素点组成&#xff0c;屏幕大小指宽度方向由width个像素点&#xff0c;高度方向由height个像素点。 像素点索引范围&#xff1a;&#xff08;0&#xf…

【Java开发】JUC进阶 03:读写锁、阻塞队列、同步队列

1 读写锁&#xff08;ReadWriteLock&#xff09;&#x1f4cc; 要点实现类&#xff1a;ReentrantReadWirteLock通过读写锁实现更细粒度的控制&#xff0c;当然通过Synchronized和Lock锁也能达到目的&#xff0c;不过他们会在写入和读取操作都给加锁&#xff0c;影响性能&#x…

黑马程序员SSM框架教程之学习笔记1

P44-SpringMVC入门案例 1.在pom.xml中导入坐标springMVC与servlet 2.创建一个SpringMVC控制器类 3.创建springMVC配置文件springMvcCponfig 4.定义一个servlet容器启动配置类&#xff0c;在里面加载spring的配置 5.在pom.xml文件中配置tomcat插件 运行结果显示 P45-springMVC入…

2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。

2023-03-05&#xff1a;ffmpeg推送本地视频至lal流媒体服务器&#xff08;以RTMP为例&#xff09;&#xff0c;请用go语言编写。 答案2023-03-05&#xff1a; 使用 github.com/moonfdd/ffmpeg-go 库。 先启动lal流媒体服务器软件&#xff0c;然后再执行命令&#xff1a; go…

linux通过nginx映射指定目录文件给外部访问

修改配置文件 #user www-data; #将user www-data;注掉改为root user root; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on; }http {### Basic Settings##sendfile on;tcp_nopush …

【C语言学习笔记】:三子棋具体步骤和代码

一、问题描述 用c语言实现三子棋。 二、基本流程 在写三子棋的代码之前&#xff0c;我们来看看实现这个游戏的逻辑&#xff1a; 1.菜单界面选择开始或者退出游戏。2.创建棋盘并初始化。3.打印棋盘。4.玩家落子(玩家输入行列坐标的方式来落子)&#xff0c;x’表示玩家落子。5…

既然有MySQL了,为什么还要有Redis?

目录专栏导读一、同样是缓存&#xff0c;用map不行吗&#xff1f;二、Redis为什么是单线程的&#xff1f;三、Redis真的是单线程的吗&#xff1f;四、Redis优缺点1、优点2、缺点五、Redis常见业务场景六、Redis常见数据类型1、String2、List3、Hash4、Set5、Zset6、BitMap7、Bi…

ESP32学习笔记01-环境搭建

本文参考博客https://blog.csdn.net/weixin_43599390/article/details/123944479 1.下载离线版本的 ESP IDF esp idf 下载地址 2.安装 esp idf 2.1应用修复,后,再下一步 2.2 2.3 2.4 2.5

跨屏设计规范

跨屏设计规范 以windows10x 为例&#xff0c;其在具体交互上&#xff0c;到底有哪些常见的交互模式和硬件要如何结合 6.1跨平台的双屏交互设计逻辑 这种那个品的设计范式&#xff0c;其实是跨平台的通用规则&#xff0c; 在很大程度上&#xff0c;这套交互逻辑是不受操作系统…

【CSS】CSS 复合选择器 ③ ( 并集选择器 | 并集选择器与后代选择器示例 )

文章目录一、并集选择器1、语法说明2、代码示例二、并集选择器与后代选择器示例1、添加注释2、HTML 结构3、后代选择器 14、后代选择器 25、并集选择器6、完整代码示例7、显示效果一、并集选择器 1、语法说明 并集选择器 可以选择 若干 基础选择器 选择出的 并集元素集合 ; 并集…

【亲测】Centos7系统非管理(root)权限编译NCNN

前言 由于使用的是集群&#xff0c;自己不具有管理员权限&#xff0c;所以以下所有的情况均在非管理员权限下进行安装&#xff0c;即该安装策略仅适用于普通用户构建自己的环境。 什么是NCNN ncnn是一款非常高效易用的深度学习推理框架&#xff0c;支持各种神经网络模型&#x…

文件异步多备常用方案

业务需求上经常存在需要对同一个文件进行双上传&#xff0c;上传到不同云存储桶&#xff0c;以防出现某一个云厂商因各种意外导致自身服务出现不可用的情况&#xff0c;当然&#xff0c;还有其他措施可以避免&#xff0c;现在只针对通过程序业务代码而双写存储的这个场景。 业务…

Java分布式解决方案(三)

文章目录&#x1f525;MySQL事务-MySQL中锁的分类&#x1f525;MySQL事务-MySQL中的死锁问题&#x1f525;MySQL事务-MySQL中锁的分类 MySQL中锁的分类 从本质上讲&#xff0c;锁是一种协调多个进程或多个线程对某一资源的访问的机制&#xff0c;MySQL使用锁和MVCC机制实现了…

了解基本的html和javascript

用记事本编辑一个文本文件&#xff0c;代码如下&#xff0c; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>my name is bo</title> <script>alert(hello); </script> </head> <body>&…

实验2 设计模式实验1

实验内容: 1. 使用简单工厂模式设计一个可以创建不同几何形状(Shape)&#xff0c;例如圆形 (Circle)、矩形(Rectangle)和三角形(Triangle)等的绘图工具类&#xff0c;每个几何图形均具 有绘制方法draw()和擦除方法erase()&#xff0c;要求在绘制不支持的几何图形时&#xff…

Android 基础知识4-3.6 ToggleButton(开关按钮)Switch(开关)详解

一、ToggleButton(开关按钮) 1.1、简介 ToggleButton 类似开关有开和关两种状态&#xff0c;不同的状态下可以有不同的文本。 public class ToggleButton extends CompoundButton Displays checked/unchecked states as a button with a "light" indicator …

CNN基础

Tip&#xff1a;仅供自己学习记录&#xff0c;酌情参考 1. 前馈与反馈神经网络 神经网络有前馈神经网络和反馈神经网络&#xff0c;前向神经网络也就是前馈神经网络。 前馈型神经网络各神经元接收前一层的输入&#xff0c;并输出给下一层&#xff0c;没有反馈。节点分为两类…

nacos-sdk-rust binding to NodeJs

广告时间 nacos-sdk-rust-binding-node : nacos-sdk-rust binding to NodeJs with napi. Tip: nacos-sdk-nodejs 仓库暂未提供 2.x gRPC 交互模式&#xff0c;为了能升级它&#xff0c;故而通过 node addon 方式调用 nacos-sdk-rust npm 包 -> https://www.npmjs.com/packa…

Spring系列-8 AOP使用与原理

背景 按照软件重构的思想&#xff0c;当多个类中存在相同的代码时&#xff0c;需要提取公共部分来消除代码坏味道。Java的继承机制允许用户在纵向上通过提取公共方法或者公共部分(模版方法方式)至父类中以消除代码重复问题&#xff1b;日志、访问控制、性能监测等重复的非业务…

GO的IO接口和工具

GO的IO接口和工具 文章目录GO的IO接口和工具一、io包中接口的好处和优势1.1拷贝数据的函数二、 在io包中&#xff0c;io.Reader 的扩展接口和实现类型都有哪些2.1 io.Reader的扩展接口2.2 io.Reader接口的实现类型2.3 示例三、io包的接口&#xff0c;以及它们之间的关系3.1 读操…