【超全详解】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对应的文件夹。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

eclipse中使用PlantUML plugin查看对象关系

一.背景 公司安排的带徒弟任务&#xff0c;给徒弟讲了如何设计对象。他们的思维里面都是单表增删改查&#xff0c;我的脑海都是一个个对象&#xff0c;他们相互关系、各有特色本事。稳定的结构既能满足外部功能需求&#xff0c;又能在需求变更时以最小代价响应。最大程度的记录…

代码随想录 动态规划-子序列问题-子序列(连续)

目录 674.最长连续递增序列 718.最长重复子数组 53.最大子数组和 674.最长连续递增序列 674. 最长连续递增序列 简单 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&…

【经验分享】Typora 设置代码块的默认语言并设置为开机启动

Typora 设置代码块的默认语言并设置为开机启动 目录 Typora 设置代码块的默认语言并设置为开机启动引入设置代码块的默认语言将其设置为开机启动 引入 我们在使用Typora的时候&#xff0c;通过CtrlShiftK生成代码块时&#xff0c;会发现我们每次都需要重新设置代码块的语言类型…

【C++练级之路】【Lv.15】AVL树(双子旋转,领略绝对平衡之美)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、AVL树的概念二、AVL树的模拟实现2.1 结点2.2 成员变量2.3 插入2.4 旋转2.4.1 左单旋2.4.2 右单旋2.4.3 …

【聚类】K-Means聚类(优缺点、手肘法、轮廓系数法、检测异常点、图像压缩,含代码实战)

写在前面&#xff1a; 首先感谢兄弟们的关注和订阅&#xff0c;让我有创作的动力&#xff0c;请一键三连&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 1、…

FPGA - AXI4_Lite(实现用户端与axi4_lite之间的交互逻辑)

在之前的博客中对AXI4总线进行了介绍&#xff08;FPGA-AXI4接口协议概述&#xff09;&#xff0c;在这篇博客中&#xff0c;实现用户端与axi4_lite之间的交互逻辑。 一&#xff0c; AXI4 1.1 AXI4 介绍 对AXI4总线简单介绍&#xff08;具体可见FPGA-AXI4接口协议概述&#…

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…

AJAX踩坑指南(知识点补充)

JWT JSON Web Token是目前最为流行的跨域认证解决方案 如何获取&#xff1a;在使用JWT身份验证中&#xff0c;当用户使用其凭据成功登录时&#xff0c;将返回JSON Web Token(令牌&#xff09; Token本质就是一个包含了信息的字符串 如何获取Token:登录成功之后&#xff0c;服务…

K8s+Nacos实现应用的优雅上下线【生产实践】

文章目录 前言一、环境描述二、模拟请求报错三、配置优雅上下线1.修改nacos配置2.修改depolyment配置3.重新apply deployment后测试4.整体(下单)测试流程验证是否生效 四、期间遇到的问题 前言 我们在使用k8s部署应用的时候&#xff0c;虽然k8s是使用滚动升级的&#xff0c;先…

处理登录失效后提示多个错误

问题: 我的场景是后端规定&#xff0c;即使登录失效返回的code仍是200&#xff0c;然后data的code是999什么的&#xff1b; 原本代码&#xff1a; 修改版代码&#xff1a; 通过节 const NotLoginEvent () > {router.replace("/login");localStorage.clear();M…

队列——数据结构——day5

队列 队列(queue)是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线性表&#xff0c;简称FIFO。允许插入的一端称为队尾&#xff0c;允许删除的一端称为队头。假设队列是q(a1,a2,……,an),那么a1就是队头元…

银行数字人民币系统应用架构设计

2019年10月&#xff0c;01区块链联合数字资产研究院发布了《人民币3.0&#xff1a;中国央行数字货币运行框架与技术解析》&#xff0c;从数字货币界定和人民币发展历程出发&#xff0c;区分了央行数字货币与比特币、移动支付等的区别&#xff0c;全面介绍了央行数字货币的发展历…

C#,图论与图算法,有向图(Direct Graph)广度优先遍历(BFS,Breadth First Search)算法与源程序

1 图的广度优先遍历 图的广度优先遍历(或搜索)类似于树的广度优先遍历(参见本文的方法2)。这里唯一需要注意的是,与树不同,图可能包含循环,因此我们可能再次来到同一个节点。为了避免多次处理节点,我们使用布尔访问数组。为简单起见,假设所有顶点都可以从起始顶点到达…

ChatGPT智能聊天系统源码v2.7.6全开源Vue前后端+后端PHP

测试环境:Linux系统CentOS7.6、宝塔、PHP7.4、MySQL5.6,根目录public,伪静态thinkPHP,开启ssl证书 具有文章改写、广告营销文案、编程助手、办公达人、知心好友、家庭助手、出行助手、社交平台内容、视频脚本创作、AI绘画、思维导图等功能 ai通道:文心一言、MiniMax、智…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包springboot2篇)

前言 在当前多元化开发环境下&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱&#xff0c;而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

Linux设备驱动开发 - 三色LED呼吸灯分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…

python--容器、列表

1.python官方内置的容器 list: set: tuple: dict: 弱数据类语言通通没有数组&#xff0c;因为数组指的是 类型固定、大小固定、连续的内存空间。 2.链表&#xff1a; 非连续内存空间 python用的是双向链表 单向链表&#xff1a;优点&#xff1a;不浪费内存&#xf…

代码随想录day28(1)二叉树:二叉搜索树中的插入操作(leetcode701)

题目要求&#xff1a;给定二叉搜索树&#xff08;BST&#xff09;的根节点和要插入树中的值&#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证&#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 思路&#xff1a;对于二叉搜索树来说&…

如何使用ospf (enps) 简单实践ospf协议

1. OSPF的基本概念 OSPF&#xff08;Open Shortest Path First&#xff0c;开放式最短路径优先&#xff09;是一种广泛应用于TCP/IP网络中的内部网关协议&#xff08;Interior Gateway Protocol, IGP&#xff09;&#xff0c;主要用于在同一自治系统&#xff08;Autonomous Sys…

SpringBoot项目集成XXL-job

文章目录 首先引入依赖配置信息配置类定义定时任务执行方法配置任务执行器配置任务执行计划 在集成 XXL-job 前,首先确保部署了 XXL-job 的 admin 服务, 如果还没有部署的话请参照 Docker安装部署XXL-Job 将 XXL-job 部署起来. 此时, XXL-job 已经部署好了, 下来一步一步的来集…