当前位置: 首页 > news >正文

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

目录

一、背景

二、JAVA项目与Maven的关系

2.1标准java项目

2.2 maven

2.2.1 下载maven

1、下载

2、配置环境

2.2.2 setting.xml

1、配置settings.xml

2、IDEA配置maven


一、背景

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

二、JAVA项目与Maven的关系

2.1标准java项目

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

项目根目录/
├── 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 自动处理依赖和构建流程。
    • 项目基本信息(groupIdartifactIdversion):定义项目名称(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

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

tar -zxvf apache-maven-3.6.3-bin.tar.gz

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

2、配置环境

vim ~/.bash_profile

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

保存后输入指令激活

source ~/.bash_profile

安装成功,并查看

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)基本指令

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)日常开发可能涉及

# 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)调试和排错

# 详细输出
mvn test -X                         # 显示详细调试信息
mvn test -e                         # 显示错误堆栈# 依赖分析
mvn dependency:tree                 # 查看依赖树
mvn dependency:analyze              # 分析依赖问题# 跳过测试
mvn package -DskipTests             # 打包时跳过测试
mvn install -Dmaven.test.skip=true  # 完全跳过测试编译和执行

http://www.dtcms.com/a/275042.html

相关文章:

  • TensorFlow2 study notes[1]
  • 9.卷积神经网络操作
  • 【网络编程】KCP——可靠的 UDP 传输协议——的知识汇总
  • 公链的主要特征有哪些?
  • 【Docker#1】技术架构演进之路
  • Script Error产生的原因及解法
  • 新品上架后,亚马逊卖家如何高效投放广告
  • 自信的本质:在克服逆境的过程中爱上自己
  • 四、神经网络——正则化方法
  • Operation Blackout 2025 Phantom Check hayabusa+ControlSet001+VirtualBox
  • 【笔记】训练步骤代码解析
  • docker安装Consul笔记
  • Java(7.11 设计模式学习)
  • PLC框架-1.3- 汇川PN伺服(3号报文)
  • 多种人脸处理方案——人脸裁剪
  • Webview 中可用的 VS Code 方法
  • G1 垃圾回收算法详解
  • 【TCP/IP】16. 简单网络管理协议
  • 天晟科技携手万表平台,共同推动RWA项目发展
  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(Spring Boot、MyBatis、Kafka、Redis、AI等)
  • kubernetes单机部署踩坑笔记
  • DIDCTF-蓝帽杯
  • 谷歌云代理商:谷歌云TPU/GPU如何加速您的AI模型训练和推理
  • 【数据结构与算法】206.反转链表(LeetCode)
  • C++:非类型模板参数,模板特化以及模板的分离编译
  • 实现将文本数据(input_text)转换为input_embeddings的操作
  • 《从依赖纠缠到接口协作:ASP.NET Core注入式开发指南》
  • Vue 表单开发优化实践:如何优雅地合并 `data()` 与 `resetForm()` 中的重复对象
  • Sigma-Aldrich 细胞培养实验方案 | 通过Hoechst DNA染色检测细胞的支原体污染