【超全详解】Maven工程配置与常见问题解决指南

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

Maven工程

目录

  • Maven工程
      • 一、如何检查Maven工程是否配置正确?
          • 1、检查路径
          • 2、检查基本配置
          • 3、其他配置
      • 二、Maven的基本操作
          • 基本操作
          • `install`和`package`的区别
      • 三、获取别人的Maven工程之后如何修改?
      • 四、如何正确写好配置文件?
          • 1.寻找配置资源
          • 2.管理项目依赖
      • 五、Maven工程的创建
      • 六、Maven工程的基本目录结构
      • 七、Maven工程的常见问题和解决方案

一、如何检查Maven工程是否配置正确?

1、检查路径
  • 在Settings中找到Build,Execution,Deployment,找到其中的Build Tools,再找到Maven,检查以下的三个路径是否配置完毕。

在这里插入图片描述

2、检查基本配置
  • pom.xml中的maven.compiler.source和maven.compiler.target都是8
  • Project Structure中的Modules的Language Level为8-Lambdas,type annotations etc.
  • Settings中的Build,Execution,Deployment中的Compiler的Java Compiler的Project bytecode version为8,Target bytecode version为1.8
3、其他配置
  • 将pom.xml中的jdk版本改为1.8
  • 选中右下角弹窗auto import

如果前者配置正确但Maven工程仍无法正常使用,则将Maven工程删掉重建

二、Maven的基本操作

基本操作

在这里插入图片描述

  • clean-compile 删除target目录并重新编译
    • 必须先clean之后,再进行compile
    • 一般来说,clean-compile针对的是项目代码有修改或者构建过程中出现错误的情况,习惯性在进行其他操作前先clean-compile一次
  • install 打资源jar包,直接将jar包打入maven repository
  • package 打执行jar包,直接将jar包打入target
installpackage的区别

package是本地化的,只生成部署包(如jar包),而install相当于在执行了package之后,再将其安装到本地仓库。两者都能找到实际的部署包文件,区别只是在于是否需要放入本地仓库。
在这里插入图片描述

  • reload project用于刷新配置文件,如果添加/删除了依赖或者插件就可以用它

三、获取别人的Maven工程之后如何修改?

1.修改Maven配置
详见第一大点

2.清除缓存

  • 通过IDEA的File -> Invalidate Caches清除缓存
  • Maven Clean 清除旧的源文件

3.更新项目依赖

  • 在IDEA右键点击项目根目录执行Maven -> Reimport
  • 在IDEA右键点击pom.xml执行Maven -> Reload

4.配置数据源和其他环境
5.检查项目编译版本
6. 删除target代码包重新编译
7. 标记源码目录

  • 对所有的Java包Mark Directory As -> Sources Root

四、如何正确写好配置文件?

1.寻找配置资源

在Maven Repository上搜索所需资源
在这里插入图片描述
在选择资源时,最好选择用的人数较多的、非红色提示信息(失效)、较新版本的资源。
点击进任意版本号后,就会出现该资源的Maven配置信息如下,直接拷贝后放入工程中的配置文件即可。(注意:在将配置信息放入配置文件之后,需要记得进行reload project)
在这里插入图片描述

2.管理项目依赖
  • 如果导入依赖后报错,则需要手动进行reload project
  • 首先需要在pom.xml文件的<properties>部分定义依赖的版本号,然后在<dependencies>部分将实际的依赖项一次性粘贴进去即可,Maven会自动使用前面定义的版本号。

五、Maven工程的创建

1.选择工程范式

  • 创建一个有特定archetype的Maven工程
    • 常见archetype:quickstartwebapp
    • 能够直接生成对应的Maven项目结构
    • 目录结构包含了src,pom.xml和一些archetype特有的目录结构
  • 创建一个Maven化的Java工程
    • 目录结构比较简单,只有src和一些基本配置文件
    • 更有利于根据需求进行定制化

2.配置Advanced Settings

  • GroupId: 域名倒置 com.ybg
  • ArtifactId: 工程名称

3.验证是否成功创建Maven工程:检查工程下是否有src目录,有即创建成功
4.删除不需要的依赖和test包

六、Maven工程的基本目录结构

项目根目录
│   pom.xml    
│
└───src├───main│   ├───java│   │   └───com│   │       └───ybg│   │           └───项目名│   │                   │   Application.java (主类)│   │                   ├───config (配置相关)│   │                   ├───controller (控制层)│   │                   ├───domain (实体类)│   │                   │   ├───dto (数据传输对象)│   │                   │   └───vo  (视图对象)│   │                   ├───exception (异常处理)│   │                   ├───mapper (数据访问层,MyBatis的Mapper接口)│   │                   ├───repository (数据访问层,如使用Spring Data)  │   │                   ├───service (服务层)│   │                   │   ├───impl (服务实现)│   │                   │   └───... (接口)│   │                   └───util (工具类)│   ││   └───resources│        └───...  (配置文件,如application.properties/yml等)│ └───test└───java└───...  (单元测试)
  • com.ybg通常使用公司域名的反写作为基础包名,是整个代码的根包,不能在中间再建子包
  • 所有源码都放在src/main/java目录下的com/ybg/项目名包中
  • 通常按照分层结构组织代码:
    • config 存放配置相关类
    • controller Web层Controller
    • domain 领域模型相关,如实体类、DTO、VO等
    • exception 自定义异常处理
    • mapper 存放MyBatis的Mapper接口
    • repository 如使用Spring Data,存放Repository接口
    • service 服务层接口和实现
    • util 工具类
  • Application类作为主类,通常直接放在com/ybg/项目名包下
  • 资源文件如配置文件等放在src/main/resources目录下
  • 单元测试代码放在src/test/java目录下,保持与源码包名结构一致

注意以下几点:

  1. 遵循分层结构有助于代码组织和可维护性
  2. 包名采用小写,类名使用大驼峰命名
  3. 如有必要可以根据实际情况增减包
    Mapper接口和业务Service层要有良好的分离
  4. 单元测试建议覆盖到service/controller等各层

七、Maven工程的常见问题和解决方案

  • A. 假性导包,可能并没有报红,但是在external libraries中没有出现对应的依赖
    • 需要在localrepository中将对应的导包删去,并在pom.xml中reload import
  • B. 端口占用
    • netstat -ano|findstr "9000" 查询端口号被哪一个进程占用
    • taskkill /F /pid 25076 强制终止25076的进程
  • C. 时区问题(mysql)
    • set global time_zone = '+8:00';(直接在控制台执行解决时间问题)
  • D. 架包下了一半
    • 在Maven localrepository将文件夹删除(或者将整个大文件夹删除,因为可能错的不仅仅是一个文件)
    • 在工程中Maven reload project重新下载。
  • E. 如何解决Application start error?
    • Maven reload一下pom.xml
  • F. 如果出现找不到或者无法加载主类?
    • Project structure将原模块删除之后,add content对应的文件夹。

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

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

相关文章

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV

卢俊义在水里被张顺抓住&#xff0c;用轿子抬到了梁山。宋江等人下马跪在地上迎接&#xff0c;请他坐第一把交椅。卢俊义宁死不从&#xff0c;大家只好说留他在山寨几天&#xff0c;先让李固带着马车货物回去。吴用对李固说&#xff0c;你的主人已经答应坐第二把交椅了&#xf…

基于python+vue分类信息服务平台移动端的设计与实现flask-django-php-nodejs

分类信息服务平台是在Android操作系统下的应用平台。为防止出现兼容性及稳定性问题&#xff0c;框架选择的是django&#xff0c;Android与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进分类信息服务平台信…

51单片机中断信号的种类及应用场景

在嵌入式系统中&#xff0c;中断是一种重要的事件处理机制&#xff0c;它可以在程序执行的任何时候暂停当前任务&#xff0c;转而执行与之相关的特殊任务或事件。51单片机作为一种常见的微控制器&#xff0c;其中断功能在各种应用中起着关键作用。然而&#xff0c;对于初学者和…

【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线&#xff08;接收者操作特性曲线&#xff09;和AUC&#xff08;曲线下面积&#xff09;是在不同阈值设置下&#xff0c;用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法&#xff1a; ROC曲线 代表含义&#xff1a;ROC曲线是一个图形化的表示&#xf…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障&#xff1a; 表现为IGM机器人K5控制柜不能开机或突然断电。 检查&#xff1a;检查电源线是否连接良好&#xff0c;有无破损&#xff1b;检查电源模块的输出电压是否正常&#xff1b; 维修方法&#xff1a;如电源模块损坏&…

硬核分享|AI语音识别转文字与自动生成字幕

硬核分享|AI语音识别转文字与自动生成字幕_哔哩哔哩_bilibili 在现代快节奏的生活中&#xff0c;语音转文字工具成为了我们工作和学习中的得力助手。它能够将我们说出的话语迅速转化为文字或者将语音视频自动生成字幕&#xff0c;提供便捷和高效。 语音转文字转字幕工具是一种…

docker学习笔记 三-----docker安装部署

我使用的部署环境是centos 7.9 1、安装依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2 安装完成如下图 2、添加docker的软件信息源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo url地址为如…

【ReactJS】使用GoJS实现自己的图表App

目录 1:用于绘制自定义图表的JavaScript库:用于绘制UML(或BPMN或ERD …)图表的JavaScript库:2:为什么选择GoJS?3:让我们使用现有的React应用程序:步骤1:步骤2:步骤3:步骤4:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战1:…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi 检查scala安装情况 在dos窗口输入scala&#xff0c;检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - Plugins - MarketPlace中搜索scala插件 安…

RabbitMQ在Java中使用 SpringBoot 从基础到高级

充分利用每一个监听者 需要充分利用每一个消费者&#xff0c;需要在配置文件中加上prefetch配置并设置为1 rabbitmq:listener:simple:prefetch: 1 # 每次只能获取一条消息&#xff0c;处理完成才能获取下一个消息创建交换机和队列 创建队列 "fanout.queue1"&…

集简云新增“文本语音转换”功能,实现智能语音交互

为丰富人工智能领域的应用集成&#xff0c;为用户提供更便捷和智能化的信息获取和视觉创作方式&#xff0c;本周集简云上线了内置应用—文本语音转换。目前支持OpenAI TTS和TTS HD模型&#xff0c;实现文本语音高效智能转换&#xff0c;也可根据你的产品或品牌创建独特的神经网…

二、SpringBoot3 配置文件

本章概要 统一配置管理概述属性配置文件使用YAML 配置文件使用批量配置文件注入多环境配置和使用 2.1 统一配置管理概述 SpringBoot工程下&#xff0c;进行统一的配置管理&#xff0c;你想设置的任何参数&#xff08;端口号、项目根路径、数据库连接信息等等)都集中到一个固定…

福建科立讯通信 指挥调度管理平台 SQL注入漏洞复现(CVE-2024-2620、CVE-2024-2621)

0x01 产品简介 福建科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。该产品旨在提供高效的指挥调度和管理解决方案,以帮助通信运营商或相关机构实现更好的运营效率和服务质量。该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装&#xff08;以8.12.2版本为例&#xff09; 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

【Flask】Flask项目结构初识

1.前提准备 Python版本 # python 3.8.0 # 查看Python版本 python --version 安装第三方 Flask pip install flask # 如果安装失败&#xff0c;可以使用 -i&#xff0c;指定使用国内镜像源 # 清华镜像源&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/ 检查 Flask 是…

6个免费的ChatGPT网站

AI 大模型的出现给时代带来了深远的影响&#xff1a; 改变了产业格局&#xff1a;AI 大模型的发展推动了人工智能技术在各行业的广泛应用&#xff0c;改变了传统产业的运作方式&#xff0c;促进了新兴产业的崛起&#xff0c;如智能驾驶、医疗健康、金融科技等。提升了科学研究…

python的ITS 信息平台的设计与实现flask-django-nodejs-php

第二&#xff0c;陈列说明该系统实现所采用的架构、系统搭建采用的服务器、系统开发环境和使用的工具&#xff0c;以及系统后台采用的数据库。 最后&#xff0c;对系统进行全面测试&#xff0c;主要包括功能测试、查询性能测试、安全性能测试。 分析系统存在的不足以及将来改进…

haproxy 高可用

一 haproxy HAProxy简介 HAProxy提供高可用、负载均衡以及基于TCP和HTTP的应用代理&#xff0c;适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器&#xff0c;防止内部服务器遭受攻击。 HAProxy特点和优点&#xff1a; 1.支持原声SSL,同时支持客户端和…

[LeetBook]【学习日记】排序算法——归并排序

主要思想 归并排序是一种分治算法&#xff0c;其排序过程包括分和治分是指将要排序的序列一分为二、二分为四&#xff0c;直到单个序列中只有一个数治是指在分完后&#xff0c;将每两个元素重新组合&#xff0c;四合为二、二合为一&#xff0c;最终完成排序 图片作者&#xf…