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.pswp.cn/bicheng/89174.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mars3d的走廊只能在一个平面的无法折叠的解决方案

问题场景:1. Mars3d的CorridorEntity只能在一个平面修改高度值,无法根据坐标点位制作有高度值的走廊效果,想要做大蜀山盘山走廊的效果实现不了。解决方案:1.使用原生cesium实现对应的走廊的截面形状、走廊的坐标点,包括…

LeetCode 每日一题 2025/7/7-2025/7/13

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录7/7 1353. 最多可以参加的会议数目7/8 1751. 最多可以参加的会议数目 II7/9 3439. 重新安排会议得到最多空余时间 I7/10 3440. 重新安排会议得到最多空余时间 II7/11 3169. …

Bash常见条件语句和循环语句

以下是 Bash 中常用的条件语句和循环语句分类及语法说明,附带典型用例:一、条件语句 1. if 语句 作用:根据条件执行不同代码块 语法: if [ 条件 ]; then# 条件为真时执行 elif [ 其他条件 ]; then# 其他条件为真时执行 else# 所有…

uni-app 选择国家区号

uni-app选择国家区号组件 hy-countryPicker 我们在做登录注册功能的时候,可能会遇到选择区号来使用不同国家手机号来登录或者注册的功能。这里我就介绍下我这个uni-app中使用的选择区号的组件,包含不同国家国旗图标。 效果图 别的不说,先来…

客户端主机宕机,服务端如何处理 TCP 连接?详解

文章目录一、客户端主机宕机后迅速重启1、服务端有数据发送2、服务端开启「保活」机制3、服务端既没有数据发送,也没有开启「保活」机制二、客户端主机宕机后一直没有重启1、服务端有数据发送2、服务端开启「保活」机制3、服务端既没有数据发送,也没有开…

《大数据技术原理与应用》实验报告五 熟悉 Hive 的基本操作

目 录 一、实验目的 二、实验环境 三、数据集 四、实验内容与完成情况 4.1 创建一个内部表 stocks,字段分隔符为英文逗号,表结构下所示。 4.2 创建一个外部分区表 dividends(分区字段为 exchange 和symbol),字段…

【橘子分布式】Thrift RPC(编程篇)

一、简介 之前我们研究了一下thrift的一些知识,我们知道他是一个rpc框架,他作为rpc自然是提供了客户端到服务端的访问以及两端数据传输的消息序列化,消息的协议解析和传输,所以我们今天就来了解一下他是如何实现这些功能&#xff…

清理C盘--办法

c盘经常爆红1、命令行2、属性3、临时文件

Java-71 深入浅出 RPC Dubbo 上手 父工程配置编写 附详细POM与代码

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有…

创客匠人:创始人 IP 打造的内核,藏在有效的精神成长里

当创始人 IP 成为企业增长的重要引擎,许多人急于寻找 “爆款公式”,却忽略了一个更本质的问题:IP 的生命力,终究源于创始人的精神成长。创客匠人在深耕知识付费赛道的过程中,见证了无数案例:那些能持续实现…

GPT和MBR分区

GPT(GUID分区表)和MBR(主引导记录)是两种不同的磁盘分区表格式,用于定义硬盘上分区的布局、位置及启动信息,二者在设计、功能和适用场景上有显著差异。以下从多个维度详细对比: 一、核心定义与起…

c#进阶之数据结构(字符串篇)----String

1、String介绍首先我们得明白,string和String代表的实际上是同一个类型,string是C#中的关键字,代表String类型,因此我们直接来学习String类型。从官方的底层实现代码可以看出,当前String类型实际上就是一个Char类型的聚…

快速排序递归和非递归方法的简单介绍

基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元…

从零开始的云计算生活——第三十二天,四面楚歌,HAProxy负载均衡

目录 一.HAProxy简介 二.HAProxy特点和优点: 三.HAProxy保持会话的三种解决方法 四.HAProxy的balance 8种负载均衡算法 1)RR(Round Robin) 2)LC(Least Connections) 3)SH&am…

策略模式及优化

策略模式(Strategy Pattern)是一种行为设计模式,其核心思想是将算法的定义与使用分离,使算法可以独立于客户端进行变化。它通过定义一系列算法,将每个算法封装到独立的类中,并使它们可以互相替换&#xff0…

微信小程序开发-桌面端和移动端UI表现不一致问题记录

桌面端和移动端UI表现不一致零、引擎说明一、样式不同1、text 单行:1.1 空格开发者工具不展示,手机/PC端正常1.2 正常展示省略号,需要2、点击按钮z-index: -1。webview - 桌面端不行, skyline - 移动端可以;3、其他说明…

极限状态下函数开根号的计算理解(含示意图)

遇到一个挺有意思的题做个记录: 求曲线y (x21)(x2−1)0.5\frac{\left(x^{2}1\right)}{\left(x^{2}-1\right)^{0.5}}(x2−1)0.5(x21)​渐近线的条数 比较明显的x 1是无定义点。但是在求极限的时候发现1和1-得到的极限值似乎不一样。似乎是1是趋向于∞,1…

C++——模版(函数模版和类模版)

C 模板(Templates)完整介绍模板是 C 中一种强大的泛型编程机制,允许开发者编写与类型无关的代码,从而提高代码的复用性和灵活性。通过模板,可以避免为不同数据类型重复编写相似的函数或类,实现真正的代码复…

Python之cv2:cv2(OpenCV,opencv-python)库pip下载超时、下载失败、无法下载的解决方案大全

Python之cv2:cv2(OpenCV,opencv-python)库pip下载超时、下载失败、无法下载的解决方案大全 在学习和使用 OpenCV(Python 包名:opencv-python 或简称 cv2)的过程中,很多初学者常常会遇到通过 pip install o…

asyncio 与 uvloop

事件循环 事件循环 协调所有协程执行的中央调度器,它通过非阻塞机制,实现并发执行多个异步任务。 事件循环是 异步编程的核心机制,用一句话概括就是: 事件循环不断检查任务队列,一旦某个异步任务完成,它…