从0开始使用Maven

news2024/9/29 3:31:05

文章目录

  • 一.Maven的介绍即相关概念
    • 1.为什么使用Maven/Maven的作用
    • 2.Maven的坐标
  • 二.Maven的安装
  • 三.IDEA编译器配置Maven环境
    • 1.在IDEA的单个工程中配置Maven环境
    • 2.方式2:配置Maven全局参数
  • 四.IDEA编译器创建Maven项目
  • 五.IDEA中的Maven项目结构
  • 六.IDEA编译器导入Maven项目
  • 七.Maven的依赖管理
    • 1.依赖配置
    • 2.如何查找依赖的坐标信息?
    • 2.如何排除依赖
    • 3.依赖范围设置
  • 八.Maven的生命周期
    • 如何执行生命周期的阶段?
  • 一些相关内容的参考学习资源

一.Maven的介绍即相关概念

Maven是一款构建和管理Java项目的工具,它将项目开发和管理过程抽象成一个项目对象模型(POM),提供了一种统一的项目结构。

Maven官网

1.为什么使用Maven/Maven的作用

(1)多模块支持:当项目非常庞大的时候,就不适合使用package来划分模块,Maven允许将一个大型项目分解为多个模块或子项目,每个模块可以独立进行构建,测试和发布。这种模块化的结构可以更好地组织和管理复杂项目,提高代码的重用性和可维护性。

(2)构建自动化:Maven提供了一套标准的构建生命周期和插件机制,可以自动完成项目的编译,测试,打包,部署等常见任务。通过配置 Maven 插件,可以轻松地执行各种构建和部署操作,避免了手动执行复杂的命令或脚本。

(3)依赖管理:Maven 使用一个中央仓库和标准的依赖描述文件(POM)来管理项目的依赖关系。它能够自动下载、安装和更新项目的依赖项,简化了项目的管理和构建过程。这样可以减少手动维护依赖的工作,同时确保项目使用的依赖版本一致且可追踪。

(4)项目结构标准化:Maven 强制约定一种标准的项目结构,将源代码、资源文件、配置文件等按照约定的目录结构组织起来。这种标准化的项目结构使得项目更易于维护、构建和部署,并且可以减少团队成员之间的学习成本。

2.Maven的坐标

什么是坐标?:Maven坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。使用坐标定义项目或引入项目中需要的依赖

Maven坐标的组成(三个部分):

  • groupld:定义当前Maven项目组织名称(通常域名反写)
  • artifactld:定义当前Maven项目名称(通常是模块名称,例如order-server)
  • version:定义当前项目版本号

二.Maven的安装

《Maven的安装与配置本地仓库,镜像源,环境变量》

三.IDEA编译器配置Maven环境

1.在IDEA的单个工程中配置Maven环境

只在一个项目工程中使用maven,则按以下步骤配置

1.创建一个空项目(new project)

2.设置项目关联的JDK(建议使用JDK11版本,为企业主流版本)

3.配置Maven,本地仓库会自动加载

4.指定maven的settings配置文件位置

5.选择JRE版本

6.指定当前项目的字节码版本

点击Apply,ok选项完成配置

2.方式2:配置Maven全局参数

需要在任何项目工程中使用maven,则按以下步骤配置

1.File-close project

2.打开配置页面

3.配置Maven,本地仓库会自动加载

4.指定maven的settings配置文件位置

5.选择JRE版本

6.指定当前项目的字节码版本

点击Apply,ok选项完成配置

四.IDEA编译器创建Maven项目

1.File-new-moudle

2.创建Maven项目

3.输入Maven项目的信息

之后等待IDEA中将Maven的依赖下载完成,持续时间大概2分钟左右

五.IDEA中的Maven项目结构

当用户创建代码并编译允许后,会出现一个target文件夹,用来存放字节码文件:

六.IDEA编译器导入Maven项目

1.选择右侧的Maven菜单栏上的“+“号

2.选择Maven项目src文件夹下的pom.xml文件即可导入

七.Maven的依赖管理

依赖是什么?:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。即项目所依赖的外部库、框架或模块,它们是项目开发过程中需要用到的代码资源,通过引入这些依赖,可以获得所需的功能和特性。

Maven的依赖具有传递性:当被依赖的资源依赖其他资源时,当前项目会自动引入它所依赖的资源,即会间接依赖

1.依赖配置

maven的依赖配置通过在pox.xml文件中修改代码进行配置,配置步骤:

  • 在pom.xml中编写标签
  • 在标签中使用引入坐标(maven要配置的信息)
  • 定义坐标的groupld,artifactld,version
  • 点击刷新按钮,引入最新加入的坐标
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

注意依赖配置代码要写在结束标签的前面

如果你输入的依赖无法找到,即在你写入依赖配置代码后编译器报错无法找到你配置的依赖,选择刷新maven会自动下载依赖

当右侧的Maven菜单栏出现以下信息则表示maven依赖配置成功

2.如何查找依赖的坐标信息?

如果IDEA编译器没有软件提示你依赖的信息,并且你不知道依赖的坐标信息,可以到https://mvnrepository.com网站中搜索,可以直接复制配置该依赖所需要的代码

1.搜索需要的依赖

2.点击搜索到的依赖,进入页面查看信息

3.点击想要使用依赖的版本号

4.划到页面底部位置,复制该依赖代码到pom.xml中

2.如何排除依赖

由于Maven依赖具有传递性,当被依赖的资源依赖其他资源时,当前项目会自动引入它所依赖的资源,即会间接依赖。如果不需要依赖资源所依赖的其他资源,可以通过在pom.xml文件编写exclusion代码排除不想要的依赖

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>


            <exclusions>
              <exclusion>
                <groupId>ch.qos.logback</groupId>       //想要排除的依赖,被排除依赖无需指定版本
                <artifactId>logback-classic</artifactId>  
              <exclusion>
            </exclusions>

        </dependency>
    </dependencies>

注意:exclusions代码块要写在dependency代码块内,且被排除的依赖无需指定版本号version

3.依赖范围设置

依赖的jar包默认情况下可以在任何地方使用,但用户可以通过在pom.xml文件中编写scope代码设置其作用范围

依赖的作用范围有3种

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包运行(package指令范围内)

scope的值有4种

  • compile(默认):任何位置使用依赖
  • test:只在测试程序范围内使用依赖
  • provided:只在主程序和测试范围内使用依赖
  • runtime:只在测试程序和打包运行时使用依赖

代码示范

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>

            <scope>test</scope>              //依赖范围添加

        </dependency>
    </dependencies>

八.Maven的生命周期

什么是Maven的生命周期?:Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一,简单来说就是maven所执行的各个功能步骤

Maven的生命周期的过程主要有以下几点:

清理clean:将以前编译得到的旧文件class字节码文件删除
编译compile:将java源程序编译成class字节码文件
测试test:自动测试,自动调用junit程序
报告report:测试程序执行的结果
打包package:动态Web工程打War包,java工程打jar包
安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置
部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行

在Maven菜单栏的Lifecycle下可以看到生命周期的各个过程

如何执行生命周期的阶段?

方式一:直接双击Maven菜单栏中生命周期的步骤

方式二:通过cmd命令行中命令执行(注意要在maven项目的当前目录下打开cmd

mvn clean
mvn compile
mvn package
mvn test
mvn report
mvn package
mvn install
mvn deploy

一些相关内容的参考学习资源

参考视频:
黑马程序员2023新版JavaWeb开发教程,实现javaweb企业开发全流程
【小飞非系列】最新Maven实战教程-项目实战构建利器

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

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

相关文章

关于rocketMQ踩坑的那些事

在最近&#xff0c;我所写的这个项目需要使用到rocketMQ&#xff0c;为了图方便我便使用的是Windows版本的&#xff0c;但是在使用的过程中首先是发现无法发送消息出去&#xff0c;报错信息为 org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still …

做一件荒谬的事:用AI推理下一次双色球结果 v0.1

做一件荒谬的事&#xff1a;用AI推理下一次双色球结果 v0.1 引言 事情的起因是父亲被亲戚安利&#xff0c;突然喜欢上了双色球&#xff0c;连规则和开奖结果怎么看都不懂的他&#xff0c;让我研究研究这个事&#xff0c;给他选个号。他还说老家有好几个人中了几百万&#xff…

unity学习笔记18

模型文件属性简介 1.动画类型&#xff1a;一共有四种&#xff1a;无 表示没有动画&#xff0c;旧版 就表示这个模型文件里面的动画片段可以用animation组件来播放的&#xff0c;最后两个 ”泛型“和“人形”都是animator组件来播放的。区别是泛型支持所有类型的动画播放&#x…

CoreDNS实战(一)-构建高性能、插件化的DNS服务器

1 概述 在企业高可用DNS架构部署方案中我们使用的是传统老牌DNS软件Bind, 但是现在不少企业内部流行容器化部署&#xff0c;所以也可以将Bind替换为 CoreDNS &#xff0c;由于 CoreDNS 是 Kubernetes 的一个重要组件&#xff0c;稳定性不必担心&#xff0c;于此同时还可将K8S集…

微信扫码登录修改二维码的样式

默认是这个样子二维码都没有展示全 微信的了的 js 对象是这个样子&#xff0c;既然大家看到我这篇文章&#xff0c;想必里面的属性已经知道了&#xff0c;这里不做赘述。 let href data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6ODAlO21hcmdpbi10b3A6MH0uaW1wb3d…

价差后的几种方向,澳福如何操作才能盈利

在价差出现时&#xff0c;澳福认为会出现以下几种方向。 昂贵资产的贬值和便宜资产的平行升值。昂贵的资产贬值&#xff0c;而便宜的资产保持不变。昂贵资产的贬值和便宜资产的平行贬值&#xff0c;但昂贵资产的贬值速度更快&#xff0c;超过便宜资产。更贵的一对的进一步升值和…

Pycharm配置jupyter使用notebook详细指南(可换行conda环节)

本教程为事后记录&#xff0c;部分图片非实操图片。 详细记录了pycharm配置jupyter的方法&#xff0c;jupyter添加其他conda环境的方法&#xff0c;远程密码调用jupyter的方法&#xff0c;修改jupyter工作目录的方法。 文章目录 一、入门级配置1. Pycharm配置Conda自带的jupyt…

Python Opencv实践 - Yolov3目标检测

本文使用CPU来做运算&#xff0c;未使用GPU。练习项目&#xff0c;参考了网上部分资料。 如果要用TensorFlow做检测&#xff0c;可以参考这里 使用GPU运行基于pytorch的yolov3代码的准备工作_little han的博客-CSDN博客文章浏览阅读943次。记录一下自己刚拿到带独显的电脑&a…

springboot数据源配置

springboot数据源配置 数据层解决方案——持久化技术 内置持久化解决方案——jdbcTemplate 内置数据库 H2一般用于测试环境&#xff0c;配置profiels&#xff0c;只在开发阶段使用&#xff0c;让他在上线的时候不走这里就可以了 要使用内嵌的数据库H2,要先导入jar包

python提取通话记录中的时间信息

您需要安装适合中文的SpaCy模型。您可以通过运行 pip install spacypython -m spacy download zh_core_web_sm来安装和下载所需的模型。 import spacy# 加载中文模型 nlp spacy.load(zh_core_web_sm)# 示例电话记录文本 text """ Agent: 今天我们解决一下这…

语音识别从入门到精通——1-基本原理解释

文章目录 语音识别算法1. 语音识别简介1.1 **语音识别**1.1.1 自动语音识别1.1.2 应用 1.2 语音识别流程1.2.1 预处理1.2.2 语音检测和断句1.2.3 音频场景分析1.2.4 识别引擎(**语音识别的模型**)1. 传统语音识别模型2. 端到端的语音识别模型基于Transformer的ASR模型基于CNN的…

14、pytest像用参数一样使用fixture

官方实例 # content of test_fruit.py import pytestclass Fruit:def __init__(self, name):self.name nameself.cubed Falsedef cube(self):self.cubed Trueclass FruitSalad:def __init__(self, *fruit_bowl):self.fruit fruit_bowlself._cube_fruit()def _cube_fruit(s…

【从零开始学习Redis | 第六篇】爆改Setnx实现分布式锁

前言&#xff1a; 在Java后端业务中&#xff0c; 如果我们开启了均衡负载模式&#xff0c;也就是多台服务器处理前端的请求&#xff0c;就会产生一个问题&#xff1a;多台服务器就会有多个JVM&#xff0c;多个JVM就会导致服务器集群下的并发问题。我们在这里提出的解决思路是把…

Spring Security 自定义异常失效?源码分析与解决方案

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

python pyaudio对音频进行端点检测,检测出说话区间

python pyaudio对音频进行端点检测&#xff0c;检测出说话区间 主要采用过零率和语音能量来进行检测&#xff0c;并设置双阈值。 代码如下&#xff1a; # -*- coding: utf-8 -*- import wave import os import matplotlib.pyplot as plt import numpy as np# 判断是否变号 de…

差分基准站

差分基准站&#xff0c;又称参考接收机&#xff0c;是一种固定式卫星接收机&#xff0c;用于提高卫星定位精度。 差分基准站的作用是提供已知位置和准确的位置信号&#xff0c;以纠正其他移动定位终端接收器接收到的卫星信号中的误差。 卫星定位信号会受到多种因素的影响&#…

Redis缓存——Spring Cache入门学习

Spring Cache 介绍 Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff0c;例如&#xff1a; EHCacheCaffeineR…

JAVA-作业7-画一个笑脸

要求如题 代码如下&#xff1a; SmileFace01: import java.awt.Color; import java.awt.Graphics;import javax.swing.JPanel;public class SmileFace01 extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);int width getWidth(…

【c】有序数列插入一个整数

#include<stdio.h> int main() {int n;scanf("%d",&n);int arr[n1];for(int i0;i<n;i){scanf("%d",&arr[i]);}int a;scanf("%d",&a);arr[n]a;for(int j0;j<n;j){if(arr[j]>arr[n])//交换元素位置{int temparr[j];arr…

【广州华锐互动】风电场检修VR情景模拟提供接近真实的实操体验

风电场检修VR情景模拟系统由广州华锐互动开发&#xff0c;这是一种新兴的培训方式&#xff0c;它通过虚拟现实技术将风力发电场全范围进行1:1仿真建模还原&#xff0c;模拟监视风力发电场各种运行工况下的运行参数和指标&#xff0c;同时可进行升压站系统的巡视&#xff0c;倒闸…