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
install
和package
的区别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.检查项目编译版本
- 删除target代码包重新编译
- 标记源码目录
- 对所有的Java包
Mark Directory As -> Sources Root
四、如何正确写好配置文件?
1.寻找配置资源
在Maven Repository上搜索所需资源
在选择资源时,最好选择==用的人数较多的、非红色提示信息(失效)、较新版本==的资源。
点击进任意版本号后,就会出现该资源的Maven配置信息==如下==,直接拷贝后放入工程中的配置文件即可。(==注意:在将配置信息放入配置文件之后,需要记得进行reload project
==)
2.管理项目依赖
- 如果导入依赖后报错,则需要手动进行
reload project
- 首先需要在pom.xml文件的\部分定义依赖的版本号,然后在\部分将实际的依赖项一次性粘贴进去即可,Maven会自动使用前面定义的版本号。
五、Maven工程的创建
1.选择工程范式 - 创建一个有特定archetype的Maven工程
- 常见archetype:
quickstart
、webapp
- 能够直接生成对应的Maven项目结构
- 目录结构包含了src,pom.xml和一些archetype特有的目录结构
- 常见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目录下,保持与源码包名结构一致
注意以下几点:
- 遵循分层结构有助于代码组织和可维护性
- 包名采用小写,类名使用大驼峰命名
- 如有必要可以根据实际情况增减包
Mapper接口和业务Service层要有良好的分离 - 单元测试建议覆盖到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. 假性导包,可能并没有报红,但是在external libraries中没有出现对应的依赖