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

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 《深入理解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
目录
相关文章
|
7月前
|
Java Maven
如何用Maven打包
如何用Maven打包
129 0
|
3月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
280 81
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
2月前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
160 2
|
2月前
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
36 6
|
4月前
|
Java Maven
SpringBoot 引用仓库中没有 第三方包 - 将jar 包安装本地 maven
SpringBoot 引用仓库中没有 第三方包 - 将jar 包安装本地 maven
44 0
|
5月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
76 0
|
7月前
|
存储 XML Java
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
640 0
|
7月前
|
存储 JavaScript Java
【Maven从入门到如土】快速使用 Maven:命令行环境
【Maven从入门到如土】快速使用 Maven:命令行环境
115 0
|
Java Maven Android开发
Maven - 构建与命令
Maven - 构建与命令
65 0
|
IDE Java 应用服务中间件
“深入解析Maven:安装、创建项目和依赖管理的完全指南“
“深入解析Maven:安装、创建项目和依赖管理的完全指南“
669 0