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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 检查Maven配置包括验证路径、设置pom.xml与Project Structure的Java版本。基本操作有`clean-compile`、`install`和`package`,其中`install`会将jar包放入本地仓库。获取他人工程后需修改配置、清除缓存、更新依赖等。配置文件应从Maven Repository找寻,选择稳定高版本。创建Maven工程可选archetype如`quickstart`或直接创建Java工程。基本目录结构遵循分层设计原则,常见问题包括假性导包、端口占用、时区问题等,对应解决方案包括删除本地仓库文件、调整系统设置或重新加载项目。

image.png
image.png

Maven工程

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

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

image.png

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的基本操作

基本操作

image.png

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

    installpackage的区别

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

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

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

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

2.清除缓存

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

3.更新项目依赖

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

4.配置数据源和其他环境
5.检查项目编译版本

  1. 删除target代码包重新编译
  2. 标记源码目录
  • 对所有的Java包Mark Directory As -> Sources Root

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

1.寻找配置资源

Maven Repository上搜索所需资源
image.png

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

2.管理项目依赖
  • 如果导入依赖后报错,则需要手动进行reload project
  • 首先需要在pom.xml文件的\部分定义依赖的版本号,然后在\部分将实际的依赖项一次性粘贴进去即可,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对应的文件夹。
目录
相关文章
|
4天前
|
XML Java 项目管理
Maven的配置亲测有效
Maven的配置亲测有效
76 4
|
4天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4天前
|
XML Java Maven
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
53 0
|
4天前
|
Java Maven
Maven配置以及IDEA设置(Cannot resolve plugin org.apache.maven.plugins:报错)
Maven配置以及IDEA设置(Cannot resolve plugin org.apache.maven.plugins:报错)
20 1
|
4天前
|
存储 Java Apache
【maven】maven下载、安装与配置详细教程
【maven】maven下载、安装与配置详细教程
128 1
|
1天前
|
JavaScript 安全 前端开发
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(2)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(2)
|
1天前
|
前端开发 Java Maven
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)
|
4天前
|
Java Maven
修改配置maven镜像仓库位置,将maven镜像更换成阿里镜像
修改配置maven镜像仓库位置,将maven镜像更换成阿里镜像
107 0
|
4天前
|
XML Java 测试技术
【你的Maven配置出错?看这个】
【你的Maven配置出错?看这个】
23 1
|
4天前
|
Java Maven
【IDEA】常用快捷键和自定义方法补全(附如何设置IDEA全局配置,如Maven)
【IDEA】常用快捷键和自定义方法补全(附如何设置IDEA全局配置,如Maven)
22 0

热门文章

最新文章

推荐镜像

更多