《深入理解Maven:构建工具、常用命令与项目包技巧解析》

简介: 《深入理解Maven:构建工具、常用命令与项目包技巧解析》

在后端领域开发中,我们构建项目常用到了Maven和Gradle两种构建工具,我还用的更多的是Maven构建工具,其中涉及到了Maven的一些操作,比如:clean、Package、install等等命令。这些命令到底在干什么?具体含义与作用?本文将结合工作实际案例进行总结。

何为构建工具 | Tools

在实际项目开发中,程序员最怕什么?那就是项目的配置!环境的配置,导包,部署项目,导入依赖这些杂活。在这个过程中,光是配置工作就会占据你的大部分开发工作,你实际专注业务开发的精力就不多了。所以自动化构建工具就出现了。

自动化项目构建工具是一种能够自动执行项目构建过程的软件工具。这些工具能够自动化地将源代码转换成可执行的程序或库,以及进行其他相关的构建任务,如编译、测试、打包和发布等。

自动化项目构建工具的出现极大地提高了开发效率,减少了手动执行构建任务时可能出现的错误。它们通常具备以下功能:

  1. 自动化构建:根据项目的配置和依赖关系,自动执行构建流程,无需人工干预。
  2. 依赖管理:自动下载、管理和更新项目所需的依赖库和框架。
  3. 编译和打包:将源代码编译成可执行文件或库,并按照指定格式进行打包。
  4. 测试:自动运行单元测试、集成测试等,确保代码的质量和稳定性。
  5. 发布:将构建好的程序或库发布到指定的位置,如本地文件系统、远程仓库或应用商店等。

常见的自动化项目构建工具有Maven、Gradle、Grunt等。这些工具都提供了丰富的配置选项和插件系统,使得开发者能够根据自己的需求定制构建流程。同时,它们也支持跨平台使用,可以在不同的操作系统和环境中进行项目构建。

通过使用自动化项目构建工具,开发者可以更加专注于编写高质量的代码,而无需花费大量时间和精力在繁琐的构建任务上。这有助于提升项目的开发效率、降低维护成本,并促进团队协作和持续集成等最佳实践的实施。


Maven插件的常用命令 | Commond

使用Maven命令,通常我都是直接通过IDEA进行的,不太喜欢命令行。接下来我们通过一个项目来说明Maven插件下的clean,compile,build,install,package区别。

clean

执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。

当我们运行一个项目以后,项目下方会生成一个target文件,里面装满了编译好的类文件!

当我们执行一下右边的clean命令以后,就会这样:

总结 | Summary

执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。

compile

编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件。

其实这一步工作可以帮助你检查一下你的代码是否有基础的语法错误。

总结 | Summary

你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件。

package

这个 package命令首先自带了上面 compile命令,能够帮你检查语法,帮你生成一个target文件,能够帮你将项目打包成一个jar或者war包。

运行一下这个命令:

我们发现在target目录下会多出一个jar包,我们就可以选择将这个jar包放到其他项目的lib文件下,提供外部依赖引入,也可以将这个jar包放到服务器上运行,也可以在本地直接运行这个jar包,在这里我将直接演示在本地运行这个jar包。

总结 | Summary

帮你将项目打包成一个jar或者war包。

install

在上面的命令 package命令可以将一个项目打成jar包,然后外部项目去导入这个jar进行外部依赖导入,但是这有一个致命问题:当一个项目需要成百上千的jar包导入的时候,都去外部导入吗?这样就会很麻烦,这个时候我们不得不用POM文件,通过坐标的概念将外部jar包引入,这个时候外部jar包就不要放在每个项目的lib文件下,而是放到本地仓库里即可。

我们通过一个例子来说明,现在有两个项目A和B,我们需要将A项目打成jar包,然后将这个jar包放到B项目的lib文件下引入:

将jar包放到B项目:

我们现在的问题是,这个lib文件下如果放了成百上千jar是不是很麻烦,所以我们通过如下B项目的POM文件进行引入:

我们发现 在B 项目通过坐标引入A项目依赖报错,找不到。怎么办?那就需要将A项目打包放到远程仓库里,所以这个时候我们要用 install命令。

首先在A项目中用install命令:

这个时候我们在B项目中引入这个jar包就能成功了:

总结 | Summary

该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题)build功能类似compile,只是只对整个项目进行编译。

build和compile的区别 | Knowledge

  • Compile:只编译选定的目标,不管之前是否已经编译过。
  • Build:是对整个工程进行彻底的重新编译,而不管是否已经编译过。Build过程往往会生成发布包,这个具体要看对IDE的配置了,Build在实际中应用很少,因为开发时候基本上不用,发布生产时候一般都用ANT等工具来发布。Build因为要全部编译,还要执行打包等额外工 作,因此时间较长

项目包技巧 | Method

  • 法一:clean,package(如果报错,很可能就是jar依赖的问题,一般此问题都出现在第一次打包的情况,就用法二)
  • 法二:clean,install
目录
相关文章
|
存储 前端开发 安全
GET 和 POST 请求:理解它们之间的区别和适用场景
GET 和 POST 请求:理解它们之间的区别和适用场景
|
JSON 前端开发 Android开发
Android MVI框架搭建与使用(上)
Android MVI框架搭建与使用(上)
619 0
|
Java Apache Maven
使用checkstyle来规范你的项目
Checkstyle是什么 自从做了程序员,关于格式化的讨论就不曾中断过,到底什么才是正确的,什么才是错误的,到现在也没有完整的定论。但随着时间发展,渐渐衍生出一套规范出来。没有什么绝对的正确和错误,关键在于规范的定义。
6660 0
|
5月前
|
人工智能 安全 Linux
OpenClaw极简技能方案:阿里云/本地部署+精选5大Skill神器+API配置完全指南
在OpenClaw生态日趋庞大的2026年,ClawHub上的技能数量已经突破2.9万个,但大量用户陷入技能囤积的误区,安装数十个技能却无法形成有效工作流,不仅没有提升效率,反而带来系统卡顿、安全风险、选择焦虑等问题。经过大量实测与场景验证,真正能解决日常80%需求的技能只需要5个,精简、稳定、高效,既能避免恶意插件风险,又能让AI智能体专注执行核心任务。本文基于真实使用经验,详解5个必备OpenClaw技能的功能、安装命令、使用场景,同时完整提供2026年阿里云服务器部署、MacOS/Linux/Windows11本地部署流程,以及阿里云千问大模型API与免费Coding Plan API的
895 6
|
8月前
|
人工智能 缓存 自然语言处理
构建AI智能体:三十九、中文新闻智能分类:K-Means聚类与Qwen主题生成的融合应用
K-Means作为最经典和广泛使用的聚类算法,以其简单性和效率在数据科学中占据重要地位。尽管有其局限性,但通过合理的初始化方法、参数调优和与大模型的结合,K-Means仍然能够解决许多实际聚类问题。与大型语言模型的结合代表了现代AI应用的一个重要方向,其中K-Means负责高效处理和大规模模式识别,而大模型负责深度的语义理解和内容生成,二者优势互补,构建出更加智能和高效的AI系统。
470 12
|
3月前
|
人工智能 安全 Devops
Hermes Agent官方可选装Skills整理
Hermes Agent 内置90个技能,官方Skills Hub另提供70+可选技能(已剔除国内不可用项),覆盖AI代理、创意生成、DevOps、MLOps、健康、安全、研究等10余类场景,开箱即用,灵活扩展。
975 0
|
缓存 Java Nacos
nacos常见问题之无法注册如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
3387 7
|
Android开发
android Jetpack Navigation组件——堆栈操作和动画效果
android Jetpack Navigation组件——堆栈操作和动画效果
1163 0
android Jetpack Navigation组件——堆栈操作和动画效果
|
JSON 数据格式
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
8680 0

热门文章

最新文章