6 maven工具的使用、maven项目中使用日志

文章目录

  • 前言
  • 一、maven:一款管理和构建java项目的工具
    • 1 基本概念
    • 2 maven的安装与配置
      • (1)maven的安装
      • (2)IDEA集成Maven配置
        • 当前项目工程设置 maven
        • 全局设置
      • (3)创建一个maven项目
    • 3 pom.xml文件
    • 4 导入maven项目
    • 5 依赖管理
      • (1)依赖配置
      • (2)依赖传递
        • 特性1:坐标引入一个jar包会将其需要的依赖jar包一起引入进来
        • 特性2:坐标引入项目中其他模块(在本项目一个模块中将另一个项目当依赖引进来)
      • (3)排除指定依赖
      • (4)依赖范围
      • (5)生命周期(编译、打包)
  • 二、maven中使用日志
  • 三、maven进阶:高级使用


前言


一、maven:一款管理和构建java项目的工具

1 基本概念

参考视频

  • 什么是maven?
    Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
    POM: project object model

  • 官网:http://maven.apache.org/

  • Maven的作用?

    • 依赖管理
      方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题。

    • 统一项目结构
      提供标准、统一的项目结构
      在这里插入图片描述

    • 项目构建
      标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式
      maven提供了指令可以快速的将项目进行 编译、打包这些工作

  • 工作原理:
    参考视频
    在这里插入图片描述

    • 仓库: 用于存储资源,管理各种jar包。
      • 本地仓库: 自己计算机上的一个目录。
      • 中央仓库: 由Maven团队维护的全球唯一的。仓库地址: https://repo1.maven.org/maven2/
      • 远程仓库(私服): 一般由公司团队搭建的私有仓库。

2 maven的安装与配置

(1)maven的安装

参考视频:安装很简单,直接跟着视频来做就可以了

  • 安装步骤:
    最好去官网下载最新版本装,不然有可能有插件要求的maven版本太低,我使用是装的3.9.9版本的
    • 解压 apache-maven-3.6.1-bin.zip
      下载地址:https://maven.apache.org/download.cgi
    • 配置本地仓库: 修改 conf/settings.xml中的<localRepository>为一个指定目录
      在这里插入图片描述
    • 配置阿里云私服:修改 conf/settings.xml中的<mirrors>标签,为其添加如下子标签:
      这个阿里云已经失效,我们改为华为云
    • 配置环境变量: MAVEN HOME为maven的解压目录,并将其bin目录加入PATH环境变量
	<!-- 配置华为的Maven镜像 --><mirror><id>huaweicloud</id><mirrorOf>*</mirrorOf><url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror><!-- 配置官方的Maven镜像 --><mirror><id>central</id><name>Maven Central</name><url>https://repo1.maven.org/maven2/</url><mirrorOf>central</mirrorOf></mirror>

(2)IDEA集成Maven配置

当前项目工程设置 maven

1、创建一个空的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、选择 IDEA中 File => Settings => Build,Execution,Deployment => Build Tools => Maven

在这里插入图片描述

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

在这里插入图片描述

Maven home path :指定当前Maven的安装目录

User settings file :指定当前Maven的settings.xml配置文件的存放路径

Local repository :指定Maven的本地仓库的路径 (如果指定了settings.xml, 这个目录会自动读取出来, 可以不用手动指定)

4、配置工程的编译版本为17

  • Maven默认使用的编译版本为5(版本过低)

在这里插入图片描述
在这里插入图片描述

上述配置的maven环境,只是针对于当前工程的,如果我们再创建一个project,又恢复成默认的配置了。 要解决这个问题, 我们就需要配置全局的maven环境。

全局设置

1、进入到IDEA欢迎页面
在这里插入图片描述

2、打开 All settings , 选择 Build,Execution,Deployment => Build Tools => Maven

在这里插入图片描述

3、配置工程的编译版本为17


在这里插入图片描述

这里所设置的maven的环境信息,并未指定任何一个project,此时设置的信息就属于全局配置信息。 以后,我们再创建project,默认就是使用我们全局配置的信息。

(3)创建一个maven项目

1、创建一个空的项目
在这里插入图片描述

2、创建模块,选择Maven,点击Next
在这里插入图片描述
创建出来的目录如下:
在这里插入图片描述

3、手动创建main和test目录下的:resources文件夹
在这里插入图片描述
这样就创建了一个完整的maven项目目录
在这里插入图片描述

3 pom.xml文件

创建了一个maven项目或者模块就会生成一个pom.xml文件,这个文件就可以看做这个项目的一个配置文件

这个配置文件就可以指定maven的坐标和jar包的依赖管理

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.hjblogs</groupId>                  <!--包名,也可以理解为组织名--><artifactId>test_model</artifactId>            <!--项目名或者模块名--><version>1.0-SNAPSHOT</version>                <!--版本号--><packaging>jar</packaging>                    <name>test_model</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
</project>
  • 什么是坐标?
    Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
    使用坐标来定义项目或引入项目中需要的依赖。

  • Maven 坐标主要组成
    groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
    artifactld:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
    version:定义当前项目版本号
    在这里插入图片描述

4 导入maven项目

参考视频

5 依赖管理

(1)依赖配置

参考视频

  • 依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
  • 配置:
    • 在 pom.xml中编写<dependencies>标签
    • 在<dependencies>标签中 使用<dependency>引入坐标
    • 定义坐标的 groupld,artifactld,version
    • 点击刷新按钮,引入最新加入的坐标
      在这里插入图片描述
  • 注意
    • 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会比较耗时,耐心等待)

    • 下面这个网址可以找到各种jar包依赖的maven坐标,我们直接去找即可
      https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.2.3

    • <scope>test</scope>:这个处理junit这些只有测试会用到的依赖,不要加;
      如果不知道应不应该加,一句话不加一定不会有问题,加了可能会有问题
      如果某个依赖仅用于编写和运行测试代码,比如测试框架(JUnit、Mockito 等),那么可以将其作用范围设置为 test,这样可以减小最终构建产物的大小,避免不必要的依赖被打包进去。如果某个依赖是项目正常运行所必需的,那么应该使用默认的 compile 范围。

在这里插入图片描述
如果右上角小按钮没有:可以下面
在这里插入图片描述

刷新等待下载完成,红色报错信息消失就是配置好了,我们可以尝试一下。
在这里插入图片描述

(2)依赖传递

参考视频

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
      在这里插入图片描述
特性1:坐标引入一个jar包会将其需要的依赖jar包一起引入进来

在这里插入图片描述
可以看到,我只引入了一个logback-classic,自动就将另外两个 logback-core、slf4j这两个包也一起拉进来了

特性2:坐标引入项目中其他模块(在本项目一个模块中将另一个项目当依赖引进来)
  • 创建了两个meaven模块:test_model和test_model02
    通过下面这样就可以在test_model中引入了test_model02,并且test_model02中原理引入的jar包这些也会被引入到test_model
    这就是maven的依赖传递的强大之处

  • 注意,千万不要循环依赖了
    在这里插入图片描述

下面这个显示图就可以展示依赖图:
在这里插入图片描述
在这里插入图片描述

(3)排除指定依赖

参考视频
在依赖传递中,我们有时候会有一些依赖冲突问题,那么我们可以将冲突的版本依赖排除出去

  • 排除依赖
    排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
    在这里插入图片描述

(4)依赖范围

参考视频
依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>…</scope>设置其作用范围

  • 作用范围:
    • 主程序范围有效。(main文件夹范围内)
    • 测试程序范围有效。(test文件夹范围内)
    • 是否参与打包运行。(package指令范围内)
      在这里插入图片描述
      <scope>…</scope>设置其作用范围
      在这里插入图片描述

(5)生命周期(编译、打包)

参考视频
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
在这里插入图片描述

  • Maven中有3套相互独立的生命周期
    • clean:清理工作
    • default:核心工作,如:编译、测试、打包、安装、部署等
    • site:生成报告、发布站点等

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
在这里插入图片描述
我们只关注其中的五个

  • 生命周期阶段
    • clean:移除上一次构建生成的文件(就是删除运行产生的target这个文件夹:将上一次编译的所有字节码文件删除了就)
    • compile:编译项目源代码(编译成字节码文件,会发现生成了一个target文件夹)
    • test:使用合适的单元测试框架运行测试(junit)(就是运行当前项目中的所有单元测试里面的方法)
    • package:将编译后的文件打包,如:jar、war等(将模块打包成jar文件放在target文件夹下)
    • install:安装项目到本地仓库(就是将打包好的jar包安装到maven的本地仓库中)
      在IDEA中的maven面板中可以看到
      在这里插入图片描述
  • 执行指定生命周期的两种方式
    • 在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行
    • 在命令行中,通过命令执行
      在这里插入图片描述

二、maven中使用日志

  • step1:
    现在pom文件中导入依赖
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>
  • step2:在 src/main/resources 下添加 Logback 配置文件 logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 日志存放路径 --><property name="log.path" value="logs/rtvc-pattern" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- 系统日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>DEBUG</level><!-- 匹配时的操作:接收(记录) --><!-- <onMatch>ACCEPT</onMatch> --><!-- 不匹配时的操作:拒绝(不记录) --><!-- <onMismatch>DENY</onMismatch> --></filter></appender><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/error.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!-- 系统模块日志级别控制  --><logger name="com.cxmt" level="info" /><!-- Spring日志级别控制  --><logger name="org.springframework" level="warn" /><root level="info"><appender-ref ref="console" /></root><!--系统操作日志--><root level="info"><appender-ref ref="file_info" /><appender-ref ref="file_error" /></root>
</configuration>
  • step3:代码中使用
    特别注意这两个包别导错了,自动导包可能会导入成其他的
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
package cn.hjblogs;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** Hello world!**/public class App 
{private static final Logger logger = LoggerFactory.getLogger(App.class);public static void main( String[] args ){logger.info("Hello World!111122");logger.error("Hello World!111122");logger.info("Logback configuration is loaded.");logger.error("This is a test error log.");logger.info("Logback configuration is loaded.");logger.error("This is a test error log.");logger.info("Logback configuration is loaded.");logger.error("This is a test error log.");}
}

在这里插入图片描述
可以看到控制台就会生成日志,本地相对路径对应的目录下也会生成logs文件下面记录日志。
如果部署到服务器上,服务器上的部署的当前工作目录也会生成这个logs目录,下面记录日志;这个是一种很重要的定位bug手段。

三、maven进阶:高级使用

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio(VS)没有显示垂直滚轮or垂直滚轮异常显示

前言&#xff1a; 前段时间&#xff0c;我换上了新电脑。满心欢喜地安装好 VS&#xff0c;准备大干一场时&#xff0c;却发现了一个小麻烦 —— 垂直滚轮显示异常&#xff08;如图 1&#xff09;。这种显示方式实在让我难以适应&#xff0c;每一次操作都觉得别扭。 于是&#…

Fiddler Classic(HTTP流量代理+半汉化)

目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可&#xff0c;安装路径自…

时序数据库:Influxdb详解

文章目录 一、简介1、简介2、官网 二、部署1、安装2、配置&#xff08;1&#xff09;用户初始化 三、入门&#xff08;Web UI&#xff09;1、加载数据&#xff08;1&#xff09;上传数据文件&#xff08;2&#xff09;代码接入模板 2、管理存储桶&#xff08;1&#xff09;创建…

android 适配 api 35(android 15) 遇到的问题

首先升级 targetSdkVersion 和 compileSdkVersion 到 35&#xff0c;升级后发生的报错 一、 解决方案: 升级 gradle 和 gradle 插件版本 com.android.tools.build:gradle -> 8.3.0-alpha02 gradle-wrapper.properties : distributionUrl -> gradle-8.6-bin.zip htt…

【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装引导文件迁移显卡驱动安装等问题

Linux to go制作流程 0.写在前面 关于教程Why Linux to go&#xff1f;实际效果 1.准备工具2.制作步骤 下载系统镜像硬盘分区准备启动U盘安装系统重启完成驱动安装将系统启动引导程序迁移到移动硬盘上 3.可能出现的问题 3.1.U盘引导系统安装时出现崩溃3.2.不影响硬盘里本身已有…

完美解决phpstudy安装后mysql无法启动

phpstudy数据库无法启动有以下几个原因。 **一、**自己在电脑上安装了MySQL数据库,MySQL的服务名为MySQL,这会与phpstudy的数据库的服务名发生冲突&#xff0c;从而造成phpstudy中的数据库无法启动&#xff0c;这时我们只需要将自己安装的MySQL的服务名改掉就行。 但是&#…

Class加载流程和运行时区域

目录 jvm是什么.class加载过程干预.class.class文件内容1 加载2-1 连接&#xff1a;验证&#xff08;class字节流的校验&#xff09;2-2 连接&#xff1a;准备&#xff08;分配内存&#xff0c;初始化默认值&#xff09;2-3 连接&#xff1a;解析3 class 初始化什么时候需要对类…

ESP32开发学习记录---》GPIO

she 2025年2月5日&#xff0c;新年后决定开始充电提升自己&#xff0c;故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。 ESPIDF开发环境配置网上已经有很多的资料了&#xff0c;我就不再赘述&#xff0c;我这里只是对我的学习经历的一些记录。 首先学习一个…

pycharm集成通义灵码应用

在pycharm中安装通义灵码 1、打开files-settings 2、选中plugins-搜索”TONGYI Lingma“&#xff0c;点击安装 3.安装完成后在pycharm的右侧就有通义灵码的标签 4、登录账号 5、查看代码区域代码&#xff0c;每一个方法前面都多了通义灵码的标识&#xff0c;可以直接选择…

Git--使用教程

Git的框架讲解 Git 是一个分布式版本控制系统&#xff0c;其架构设计旨在高效地管理代码版本&#xff0c;支持分布式协作&#xff0c;并确保数据的完整性和安全性。 Git 的核心组件&#xff1a; 工作区&#xff08;Working Directory&#xff09;&#xff1a; 工作区是你在本…

力扣.270. 最接近的二叉搜索树值(中序遍历思想)

文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的中序遍历) 本题的难点在于可能存在多个答案&#xff0c;并且要返回最小的那一个&#xff0c;为了解决这个问题&#xff0c;我门则要利用上二叉搜索树中序遍历为有序序列的特性&#xff0c;具体到代码中&a…

7个国内能打开的AI绘画网站!新手福音!

以下是我收集的国内能打开的AI绘画网站。 1、6pen 网址&#xff1a;https://6pen.art/ 2、文心大模型 网址&#xff1a;https://wenxin.baidu.com/moduleApi/ernieVilg 3、Draft 网址&#xff1a;https://draft.art/ai- art/drawing 4、nightcafe 网址&#xff1a;https:/…

Redis数据库篇 -- Pipeline

一. 什么是Pipeline 在传统的请求-响应模式中&#xff0c;客户端与服务器之间的通信流程如下&#xff1a; 客户端发送一个命令到服务器。服务器接收命令并执行。服务器将执行结果返回给客户端。客户端接收结果后&#xff0c;发送下一个命令 在这种传统的模式下&#xff0c;…

Baumer工业相机堡盟相机的相机传感器芯片清洁指南

Baumer工业相机堡盟相机的相机传感器芯片清洁指南 Baumer工业相机1.Baumer工业相机传感器芯片清洁工具和清洁剂2.Baumer工业相机传感器芯片清洁步骤2.1、准备步骤2.2、清洁过程1.定位清洁工具2.清洁传感器3&#xff0e;使用吹风装置 Baumer工业相机传感器芯片清洁的优势设计与结…

【OS】AUTOSAR架构下的Interrupt详解(下篇)

目录 3.代码分析 3.1中断配置代码 3.2 OS如何找到中断处理函数 3.3 Os_InitialEnableInterruptSources实现 3.4 Os_EnableInterruptSource 3.5 DisableAllInterrupts 3.5.1Os_IntSuspendCat1 3.5.2 Os_InterruptDisableAllEnter 3.5.3 Disable二类中断 3.5.4 Disable一…

ASP.NET Core中间件Markdown转换器

目录 需求 文本编码检测 Markdown→HTML 注意 实现 需求 Markdown是一种文本格式&#xff1b;不被浏览器支持&#xff1b;编写一个在服务器端把Markdown转换为HTML的中间件。我们开发的中间件是构建在ASP.NET Core内置的StaticFiles中间件之上&#xff0c;并且在它之前运…

idea 找不到或者无法加载主类

idea项目&#xff0c;之前一直是正常运行的&#xff0c;放假了之后再回来就遇到启动不了的问题。 WebApplication这个类右键运行的时候&#xff0c;也提示找不到主类。 对于这种之前运行没有问题&#xff0c;突然出问题的项目。 我的点是没有改动代码和数据的情况下项目就跑不起…

DeepSeek R1 Distill Llama 70B(免费版)API使用详解

DeepSeek R1 Distill Llama 70B&#xff08;免费版&#xff09;API使用详解 在人工智能领域&#xff0c;随着技术的不断进步&#xff0c;各种新的模型和应用如雨后春笋般涌现。今天&#xff0c;我们要为大家介绍的是OpenRouter平台上提供的DeepSeek R1 Distill Llama 70B&…

基于SpringBoot养老院平台系统功能实现六

一、前言介绍&#xff1a; 1.1 项目摘要 随着全球人口老龄化的不断加剧&#xff0c;养老服务需求日益增长。特别是在中国&#xff0c;随着经济的快速发展和人民生活水平的提高&#xff0c;老年人口数量不断增加&#xff0c;对养老服务的质量和效率提出了更高的要求。传统的养…

新能源产业的质量革命:六西格玛培训如何重塑制造竞争力

在新能源行业狂飙突进的今天&#xff0c;企业若想在全球供应链中占据高地&#xff0c;仅靠技术突破已远远不够。制造效率的毫厘之差&#xff0c;可能成为市场话语权的千里之距。某光伏巨头曾因电池片良率低于行业均值1.5%&#xff0c;导致年损失超2.3亿元——这恰恰印证了六西格…