Maven 使用说明和配置

作者:小凯
沉淀、分享、成长,让自己和他人都能有所收获!😄
一、前言
Apache Maven (opens new window)是一个软件项目管理、构建和依赖工具。基于项目对象模型 (POM) 的概念,Maven 可以通过中央信息来管理项目的构建、报告和文档。

简单来说,Apache Maven 最大的核心功能是帮你管理 Jar 包。不知道你是否在最开始学习 Java 开发时,如果有需要依赖其他 Jar 包,则需要把那个 Jar 复制到工程中,并且还需要在 Eclipse 里配置加载 Jar 包才能使用。而现在有 Maven 这样的工具后,一切都变得简单了。工程所需的 Jar 包,只需要配置 POM 就可以直接使用拉取和使用。
在这里插入图片描述

官网:https://maven.apache.org/(opens new window)
仓库:https://mvnrepository.com/(opens new window)
镜像:https://developer.aliyun.com/mvn/guide (opens new window)- 阿里云提供的公共代理仓库,方便研发伙伴使用,速度更快更稳定。
#一、软件下载
Maven 3.8+ 需要 JDK 1.7 或更高版本才能执行。 —— 较为常用的版本

下载:https://maven.apache.org/download.cgi(opens new window)
在这里插入图片描述

下载后直接解压就可以,它就是文件,不需要做安装操作。
提醒;如果你是在 Linux 等服务器上有使用需求,而不是配置到 IntelliJ IDEA 则需要配置对应的环境变量。这样才能使用 mvn 命令。
编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:

export MAVEN_HOME=/usr/local/apache-maven-3.8.8
export PATH=${PATH}:${MAVEN_HOME}/bin

保存文件,并运行如下命令使环境变量生效:

source /etc/profile

在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:

# mvn -v

#二、环境配置
Maven /conf/settings.xml 最常用的配置一个是仓库Jar存放的位置,另外一个为了提高拉取Jar包的速度,需要配置阿里云镜像地址。—— 注意配置前,先复制一个 settings.xml.bak 做个备份。
在这里插入图片描述

#1. 存储地址

<localRepository>/Users/fuzhengwei/dev-ops/apache-maven-3.8.8/repository</localRepository>

#2. 镜像仓库

<mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror>
</mirrors>

配置上阿里云的仓库以后,Maven 的下载速度就嗖嗖的了!
#三、使用配置
打开你的 IntelliJ IDEA 如图配置 Maven;

首次打开时:
在这里插入图片描述

打开工程时:
在这里插入图片描述

配置好你的 Maven 地址就可以使用了。
#四、命令操作
IntelliJ IDEA Maven 面板提供了操作控制;
在这里插入图片描述

clean:清理,执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。
validate:验证,验证工程正确性,所需信息完整否。
compile:编译,大伙都知道java的识别文件是.class,编译生成class文件,编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件。与build区别:只编译选定的目标,不管之前是否已经编译过。
test:测试,单元测试。
package:打包,将工程文件打包为指定的格式,例如JAR,WAR等(看你项目的pom文件,里面的packaging标签就是来指定打包类型的)。这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功能进行编译,同时会在target目录下生成项目的jar/war文件。如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目,这时就用到install命令。
verify:核实,主要是对package检查是否有效、符合标准。
install:安装,将包安装至本地仓库,以让其它项目依赖。该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题)。
build:建造,功能类似compile,区别是对整个项目进行编译。与compile区别及特点:是对整个工程进行彻底的重新编译,而不管是否已经编译过。Build过程往往会生成发布包,这个具体要看对IDE的配置了,Build在实际中应用很少,因为开发时候基本上不用,发布生产时候一般都用ANT等工具来发布。Build因为要全部编译,还要执行打包等额外工 作,因此时间较长。
site:站点,生成项目的站点文档。
deploy:配置部署,复制到远程仓库。前提需要在工程 POM 和 Maven 里配置上相关的信息以及账号。
#五、构建配置

<build><finalName>项目名称</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.5</version><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- 统一设定POM版本信息插件 --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId><version>2.7</version></plugin></plugins>
</build>

在这里插入图片描述

这是一个基本的构建配置;

maven-compiler-plugin 指定构建版本
maven-resources-plugin 构建资源
versions-maven-plugin 用于统一设定工程的版本工具【如图】
#六、实战技巧
公司中会有很多的内部工程,开发时是怎么管理Jar的呢?

如果是自己本地验证,那么你需要把你的N个工程,只要是需要被M工程引用的,就需要在N个工程里都操作 Install 操作,让Jar包进入到本地仓库。这样你的其他工程就可以引入了。
如果你的本地工程已经定义好接口,需要给其他人使用。那么你可以点击deploy部署。这个部署是把你的Jar发布到内部的私有仓库,只公司可见。这个操作之前需要在 POM 里配置发布部署的信息以及账号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86417.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86417.shtml

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

相关文章

【Docker管理工具】安装Docker容器自动更新工具Watchtower

【Docker管理工具】安装Docker容器自动更新工具Watchtower 一、Watchtower介绍1.1 Watchtower简介1.2 Watchtower使用注意1.3 Watchtower使用场景1.4 Docker容器介绍 二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版…

AI优化SEO关键词精进

内容概要 随着人工智能技术的飞速发展&#xff0c;其在搜索引擎优化&#xff08;SEO&#xff09;领域的应用正引发深刻变革。本文将系统探讨AI如何革新传统的关键词优化策略&#xff0c;通过更智能的分析与匹配方法&#xff0c;显著提升内容在搜索结果中的可见度与排名。核心议…

canvas面试题200道

下面是一份 200 条关于 HTML5 Canvas 的面试题合集,适用于前端开发岗位的中高级工程师面试准备。内容涵盖基础概念、绘图操作、性能优化、动画实现、安全机制等多个方面,并附有参考答案或解析建议。 🧠 一、Canvas 基础知识(1-40) 1. 什么是 HTML5 Canvas? <canvas&…

Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)

Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定&#xff08;325&#xff09; 引言&#xff1a;正文&#xff1a;一、Java 驱动的安防视频数据采集与预处理架构1.1 多路异构视频流合规接入层&#xff08;GB/T 28181-2021 全协议适配&#xff…

【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示

我用夸克网盘分享了「lgbtq_rights_by_country数据集」&#xff0c;点击链接即可保存。 链接&#xff1a;https://pan.quark.cn/s/aa0fa91491e8 摘要&#xff1a; 本文运用Python编程实现对LGBTQ权利相关数据的处理与可视化展示。通过直方图与地图两种可视化方式&#xff0c;分…

车载通信架构 --- ECU刷写与busoff原则

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

【windows处理技巧】如何缩小PDF

原因&#xff1a;近日输出的PDF太大&#xff0c;渲染需要较多的时间&#xff0c;所以需要缩小一下PDF。 操作工具&#xff1a;adobe acrobat pro 方法&#xff1a;导入--另存为--缩减 初始&#xff1a; 压缩后

OpenCV图像添加水印

一、前言 在数字图像处理中&#xff0c;为图片添加水印是一项常见且重要的技术。无论是版权保护、品牌宣传还是防止未经授权的使用&#xff0c;水印都能发挥重要作用。OpenCV作为一款强大的计算机视觉库&#xff0c;提供了丰富的功能来实现各种水印效果。本教程将详细介绍如何…

OpenCV CUDA模块设备层-----双曲正弦函数sinh()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 OpenCV的CUDA 模块&#xff08;cv::cudev&#xff09;中的一个设备端数学函数&#xff0c;用于在 GPU 上对 uchar3 类型的像素值&#xff08;如R…

使用 Xinference 命令行工具(xinference launch)部署 Nanonets-OCR-s

使用Xinference命令行工具(xinference launch)部署Nanonets-OCR-s 一、核心优势与适用场景 通过xinference launch命令可直接在命令行完成模型部署,无需编写Python代码,适合快速验证或生产环境批量部署。 二、部署步骤:从命令行启动模型 1. 确认环境与依赖 已安装Xinf…

鸿蒙 List 组件解析:从基础列表到高性能界面开发指南

一、引言&#xff1a;列表布局 —— 鸿蒙应用的数据展示中枢 在鸿蒙应用开发体系中&#xff0c;列表布局是处理结构化数据展示的核心场景。从新闻资讯的信息流、电商平台的商品陈列到任务管理的待办事项&#xff0c;几乎所有中大型应用都依赖高效的列表组件实现数据可视化。鸿…

原生微信小程序中限制多选框(Checkbox)可选个数的实现详解

在实际业务场景中&#xff0c;我们经常会遇到表单中的复选框多选限制需求。例如最多只能选择 3 个爱好、标签、兴趣点等&#xff0c;这时就需要在微信小程序中手动控制 Checkbox 的选择行为。 本文将通过一个完整的示例&#xff0c;演示如何实现最多只能选择 N 个的 Checkbox …

OpenCV CUDA模块设备层-----线性插值函数log()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于创建线性插值访问器&#xff0c;支持对GPU内存中的图像数据进行双线性插值采样。主要应用于图像缩放、旋转等几何变换中需要亚像素级精…

Redis 单线程的“天花板”与集群的必要性

虽然 Redis 以其单线程模型&#xff08;主要是处理请求的核心逻辑&#xff09;带来了极高的性能和简洁性&#xff0c;但这并不意味着它没有瓶颈。 CPU 瓶颈&#xff1a;当业务逻辑复杂&#xff0c;或者 Redis 执行大量计算密集型操作&#xff08;比如使用 Lua 脚本进行复杂处理…

16.7 Prometheus+Grafana实战:容器化监控与日志聚合一站式解决方案

《Prometheus+Grafana实战:容器化监控与日志聚合一站式解决方案》 关键词:容器化监控、日志聚合、Prometheus、Grafana、ELK Stack、用户反馈收集 容器化监控与日志系统的架构设计 在 LanguageMentor Agent 生产部署中,监控系统需要覆盖以下维度: #mermaid-svg-I7cOqUK0i…

商务创业项目策划计划书PPT模版

创业商业融资计划书PPT模版&#xff0c;商务商业计划融资书PPT模版&#xff0c;创业融资计划书PPT模版&#xff0c;框架完整创业融资计划书PPT模版 商务创业项目策划计划书PPT模版&#xff1a;https://pan.quark.cn/s/d07d22408497

【软考高级系统架构论文】论面向方面的编程技术及其应用

论文真题: 请围绕“论软件测试中缺陷管理及其应用”论题,依次从以下三个方面进行论述: 概要叙述你参与管理和开发的软件项目以及承担的工作。详细论述常见的缺陷种类及级别,论述缺陷管理的基本流程。结合你具体参与管理和开发的实际项目,说明是如何进行缺陷管理的。请具体…

人机协作新范式:GEO与COKE框架的融合应用与品牌大模型种草实践

在人工智能迅猛发展的今天&#xff0c;我们正经历着人机关系的根本性重构。从工具性使用到协作伙伴关系&#xff0c;AI正在以前所未有的方式融入企业运营和品牌建设的各个环节。尤其是在品牌传播领域&#xff0c;“品牌大模型种草”正在成为品牌实现优质曝光和用户信任构建的新…

速通KVM(云计算学习指南)

第一章 云端的变形金刚&#xff1a;KVM的云计算基因 1.1 云计算与KVM的共生关系 想象一下&#xff0c;你有一台魔法服务器&#xff0c;它能像变形金刚一样随时分解成多台独立的小服务器&#xff0c;又能瞬间合体恢复原状——这就是KVM在云计算中扮演的角色。作为Linux内核的原…

C#最佳实践:为何优先使用隐式类型

C#最佳实践:为何优先使用隐式类型 在C#的编程世界里,类型声明是编写代码的重要环节。从早期严格指定变量类型,到引入隐式类型var,编程方式发生了不小的变革。隐式类型并非简单的语法糖,合理使用它能让代码更简洁、更易读,还能适应复杂的编程场景。接下来,我们就深入探讨…