Maven下载与配置&&对Java项目的理解

目录

一、背景

二、JAVA项目与Maven的关系

2.1标准java项目

[2.2 maven](#2.2 maven)

[2.2.1 下载maven](#2.2.1 下载maven)

1、下载

2、配置环境

[2.2.2 setting.xml](#2.2.2 setting.xml)

1、配置settings.xml

2、IDEA配置maven


一、背景

在java项目中,新手小白很有可能看不懂整体的目录结构,以及每个文件都是用来干嘛的。而且经常会遇到这种场景:配置**settings.xml** ,依赖冲突等,依赖下载失败,搞得大家焦头乱额,这些场景都和maven息息相关。

二、JAVA项目与Maven的关系

2.1标准java项目

一个标准的 Java 项目通常由以下目录和文件组成,并使用 Maven 进行依赖管理和构建:

bash 复制代码
项目根目录/
├── pom.xml                    # 项目配置文件
├── src/
│   ├── main/
│   │   ├── java/             # 主代码
│   │   └── resources/        # 主资源文件
│   └── test/
│       ├── java/             # 测试代码
│       └── resources/        # 测试资源文件
└── target/                   # 编译输出目录

(1)target

  • Maven 构建后自动生成的目录 ,包含:
    • classes/ → 编译后的 .class 文件
    • test-classes/ → 测试代码编译后的 .class 文件
    • my-java-project-1.0.0.jar → 打包后的 JAR 文件(如果是 Web 项目,可能是 .war

(2)``pom.xml

  • Maven 的核心配置文件 ,Maven 会根据 pom.xml 自动处理依赖和构建流程。
    • 项目基本信息(groupId, artifactId, version):定义项目名称(artifactId)、组织(groupId)、版本(version)等
    • 依赖(dependencies):声明项目所需的第三方库(如 Spring、JUnit),Maven 会自动下载并管理依赖。
    • 构建方式(build):指定源码目录、编译选项、打包方式(JAR/WAR)等。
    • 插件(plugins):配置 Maven 插件(如编译器插件、测试插件、打包插件)。

2.2 maven

Maven是Java项目的构建管理工具,类似于前端的npm、Python的pip,主要用于:

  • 依赖管理 - 自动下载和管理第三方库
  • 项目构建 - 编译、测试、打包
  • 项目结构标准化 - 统一的目录结构

2.2.1 下载maven

1、下载

maven3的下载地址:Index of /dist/maven/maven-3(可以选自己需要的版本)

我是在这个网址下载3.8.3:

Index of /dist/maven/maven-3/3.8.3/binaries

将包放入指定目录并解压:

bash 复制代码
tar -zxvf apache-maven-3.6.3-bin.tar.gz

我建在这个目录下:/Users/yanhan/Documents/yanhan/maven,按照自己的需求放maven位置

2、配置环境

vim ~/.bash_profile

bash 复制代码
export MAVEN_HOME=/Users/yanhan/Documents/yanhan/maven/apache-maven-3.6.3/bi    n                                                                          export PATH=$PATH:$MAVEN_HOME/bin
export PATH=$MAVEN_HOME:$PATH

保存后输入指令激活

bash 复制代码
source ~/.bash_profile

安装成功,并查看

bash 复制代码
mvn -v   
echo $MAVEN_HOME

成功

2.2.2 setting.xml

settings.xml 是 Maven 的核心配置文件之一,用于定义 全局或用户级别的 Maven 运行环境,包括仓库地址、代理服务器、认证信息等。它不直接参与项目构建,而是为 Maven 工具本身提供配置支持。

1、配置settings.xml
  1. 找到 settings.xml 文件,位置应该在:${MAVEN_HOME}/conf/settings.xml
  2. MAVEN_HOME 是 Maven 的安装目录(例如:/usr/local/apache-maven-3.8.6 或 C:\Program Files\apache-maven-3.8.6)。
  3. 直接替换即可

配置好settings.xml后,IDEA的maven并不是我们配置好的这个,需要再给IDEA配置下maven

2、IDEA配置maven
  1. 3号红框修改为前面我们配置好的setting的位置,以及maven的homepath
  2. local repository按照个人的需求自行替换,不换也ok

2.2.3 常用指令

常用指令精简表:

命令 作用
mvn clean 清理 target/ 目录
mvn compile 编译 src/main/java 代码
mvn test 运行 src/test/java 测试
mvn package 打包(生成 JAR/WAR)
mvn install 打包并安装到本地 Maven 仓库
mvn deploy 发布到远程仓库(如 Nexus)

(1)基本指令

bash 复制代码
1. 清理和编译
mvn clean                    # 清理target目录
mvn compile                  # 编译主代码 (src/main/)
mvn test-compile            # 编译测试代码 (src/test/)
mvn clean compile           # 清理后编译

2. 测试相关
mvn test                    # 运行所有测试
mvn test -Dtest=TestClass   # 运行指定测试类
mvn test -Dgroups=P0        # 运行指定分组的测试
mvn test -DskipTests        # 跳过测试

3. 打包和安装
mvn package                 # 打包成JAR/WAR
mvn install                 # 安装到本地仓库
mvn deploy                  # 部署到远程仓库

(2)日常开发可能涉及

bash 复制代码
# 1. 项目初始化
mvn clean compile                    # 编译项目,检查语法错误

# 2. 运行测试
mvn test                            # 运行所有测试
mvn test -pl tsp_group_api          # 只运行指定模块的测试
mvn test -Dtest=TestV1Groupbuy      # 运行指定测试类

# 3. 环境切换
mvn test -Ptest                     # 使用test环境配置
mvn test -Pprod                     # 使用prod环境配置

# 4. 分组测试
mvn test -Dgroups=P0                # 运行P0级别测试
mvn test -Dgroups=OFFLINE           # 运行离线测试
mvn test -Dgroups="P0,OFFLINE"      # 运行多个分组

(3)调试和排错

bash 复制代码
# 详细输出
mvn test -X                         # 显示详细调试信息
mvn test -e                         # 显示错误堆栈

# 依赖分析
mvn dependency:tree                 # 查看依赖树
mvn dependency:analyze              # 分析依赖问题

# 跳过测试
mvn package -DskipTests             # 打包时跳过测试
mvn install -Dmaven.test.skip=true  # 完全跳过测试编译和执行
相关推荐
Scott9999HH5 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔5 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社6 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海6 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖7 小时前
JDK 26 新特性详解
java·开发语言
马优晨8 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区10 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大10 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai10 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说10 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json