当前位置: 首页 > 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.lryc.cn/news/585178.html

相关文章:

  • RISC-V:开源芯浪潮下的技术突围与职业新赛道 (三)RISC-V架构深度解剖(下)
  • SpringBoot 使用注解获取配置文件中的值
  • c/c++拷贝函数
  • Claude Code是什么?国内如何使用到Claude Code?附国内最新使用教程
  • FlashBots 之 MEV-boost
  • 决策树算法在医学影像诊断中的广泛应用
  • 用Python和OpenCV从零搭建一个完整的双目视觉系统(六 最终篇)
  • CentOS 安装 Redis 简明指南
  • 【Centos】Redis Cluster 集群部署图文步骤
  • VMware安装Centos 7
  • 包稳定的Docker 安装方式(CentOS)
  • 云、实时、时序数据库混合应用:医疗数据管理的革新与展望(上)
  • 意识边界的算法战争—脑机接口技术重构人类认知的颠覆性挑战
  • C++(STL源码刨析/List)
  • 锂电池自动化生产线的现状与发展
  • 【Java】【力扣】102.二叉树层序遍历
  • 如何将ONLYOFFICE文档集成到Go网页应用中
  • css——width: fit-content 宽度、自适应
  • VR带看:开启多元领域新视界
  • VR协作海外云:跨国企业沉浸式办公解决方案
  • UDP服务器的优缺点都包含哪些?
  • 镜像(Mirror/Image)
  • 如何准确查看服务器网络的利用率?
  • K8s Service 终极解析:源码、性能、故障排查全攻略
  • 深入解码 Docker 镜像与容器的奇妙世界
  • 奇哥面试:RabbitMQ工作模式深度剖析与Spring整合MQ
  • cellphoneDB v5更新与Python环境可视化
  • 环形调制器中的部分调制谐振腔与全调制谐振腔
  • 【每日刷题】x 的平方根
  • 【mac】快捷键使用指南