{"content":{"title":"告别繁琐操作！Maven常用命令一网打尽，让你的项目开发事半功倍！","body":"Maven作为一款强大的项目管理工具，已经成为了Java开发者的必备技能。那么，如何才能更好地利用Maven来管理我们的项目呢？本文将为你介绍Maven的常用命令，让你的项目构建更轻松！\r\n\r\n## 一、maven 的概念模型\r\n\r\nMaven 包含了一个项目对象模型 ，一组标准集合，一个项目生命周期，一个依赖管理系统，和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702691972-x7ohKT.png)\r\n\r\n### 项目对象模型 (Project Object Model)\r\n\r\n一个 maven 工程都有一个 pom.xml 文件，通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。\r\n\r\n### 依赖管理系统(Dependency Management System)\r\n\r\n通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。\r\n\r\n比如：项目依赖 junit4.9，通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9，如下所示是 junit4.9的依赖定义：\r\n\r\n```\r\n<dependencies>\r\n    \r\n    <dependency>\r\n        \r\n        <groupId>junit</groupId>\r\n        \r\n        <artifactId>junit</artifactId>\r\n        \r\n        <version>4.9</version>\r\n        \r\n        <scope>test</scope>\r\n    </dependency>\r\n<dependencies>\r\n```\r\n\r\n\r\n### 一个项目生命周期(Project Lifecycle)\r\n\r\n使用 maven 完成项目的构建，项目构建包括：清理、编译、测试、部署等过程，maven 将这些过程规范为一个生命周期，如下所示是生命周期的各个阶段：\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692042-mIhh1n.png)\\\r\nmaven 通过执行一些简单命令即可实现上边生命周期的各个过程，比如执行 mvn compile 执行编译、执行 mvn clean 执行清理。\r\n\r\n### 一组标准集合\r\n\r\nmaven将整个项目管理过程定义一组标准，比如：通过 maven 构建工程有标准的目录结构，有标准的生命周期阶段、依赖管理有标准的坐标定义等。\r\n\r\n### 插件(plugin)目标(goal)\r\n\r\nmaven 管理项目生命周期过程都是基于插件完成的。\r\n\r\n## 二、Maven的常用命令\r\n\r\n我们可以在cmd 中通过maven命令来对我们的maven工程进行编译、测试、运行、打包、安装、部署。下面将简单介绍一些我们日常开发中经常会用到的一些maven 命令。\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692421-33WgtL.png)\r\n\r\n### 1、mvn compile 编译命令\r\n\r\ncompile 是 maven 工程的编译命令，作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。\r\n\r\ncmd 进入命令状态，执行mvn compile，如下图提示成功：\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692525-c5mLwW.png)\r\n\r\n查看 target 目录，class 文件已生成，编译完成。\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692548-B2CMDr.png)\r\n\r\n### 2、mvn test 测试命令\r\n\r\ntest 是 maven 工程的测试命令 mvn test，会执行src/test/java下的单元测试类。\r\n\r\ncmd 执行 mvn test 执行 src/test/java 下单元测试类，下图为测试结果，运行 1 个测试用例，全部成功。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692583-Ruw8Dq.png)\r\n\r\n### 3 、mvn clean 清理命令\r\n\r\nclean 是 maven 工程的清理命令，执行 clean 会删除 target 目录及内容。\r\n\r\n### 4、mvn package打包命令\r\n\r\npackage 是 maven 工程的打包命令，对于 java 工程执行 package 打成 jar 包，对于web 工程打成war包。\r\n\r\n只打包不测试（跳过测试）：\r\n\r\n```\r\nmvn install -Dmaven.test.skip=true\r\n```\r\n\r\n\r\n### 5、 mvn install安装命令\r\n\r\ninstall 是 maven 工程的安装命令，执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。\r\n\r\n从运行结果中，可以看出：当后面的命令执行时，前面的操作过程也都会自动执行。\r\n\r\n### 6、 mvn deploy 部署命令\r\n\r\n这个命令用于将项目部署到远程仓库，以便其他项目可以引用。在执行这个命令之前，需要先执行mvn install命令。\r\n\r\n### 7、mvn help:system\r\n\r\n这个命令用于查看系统中可用的Maven版本。\r\n\r\n### 8、mvn -v\r\n\r\n这个命令用于查看当前环境中Maven的版本信息。\r\n\r\n### 9、源码打包\r\n\r\n```\r\n#源码打包\r\nmvn source:jar\r\n或\r\nmvn source:jar-no-fork\r\n```\r\n\r\n\r\n### 10、Maven 指令的生命周期\r\n\r\n关于Maven的三套生命周期，前面我们已经详细的讲过了，这里再简单地回顾一下。\r\n\r\nmaven 对项目构建过程分为三套相互独立的生命周期，请注意这里说的是“三套”，而且“相互独立”。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692726-3v4CP2.png)\r\n\r\n这三套生命周期分别是：\r\n\r\n* Clean Lifecycle 在进行真正的构建之前进行一些清理工作。\r\n* Default Lifecycle 构建的核心部分，编译，测试，打包，部署等等。\r\n* Site Lifecycle 生成项目报告，站点，发布站点。\r\n\r\n>编程学习，从云端源想开始，课程视频、在线书籍、在线编程、一对一咨询……你想要的全部学习资源这里都有，重点是统统免费！[点这里即可查看](https://ydcode.cn/memberIndex?sourceId=488)\r\n\r\n## 三、Maven常用技巧\r\n\r\n### 1、使用镜像仓库加速构建\r\n\r\n由于Maven默认从中央仓库下载依赖，速度较慢。我们可以配置镜像仓库来加速构建。在settings.xml文件中添加以下内容：\r\n\r\n```\r\n<mirrors>\r\n  <mirror>\r\n    <id>aliyunmaven</id>\r\n    <mirrorOf>*</mirrorOf>\r\n    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>\r\n  </mirror>\r\n</mirrors>\r\n```\r\n\r\n\r\n\r\n### 2、使用插件自定义构建过程\r\n\r\nMaven提供了丰富的插件来帮助我们完成各种任务，如代码检查、静态代码分析、单元测试等。我们可以在pom.xml文件中添加相应的插件来自定义构建过程。例如，添加SonarQube插件进行代码质量检查：\r\n\r\n```\r\n<build>\r\n  <plugins>\r\n    <plugin>\r\n      <groupId>org.sonarsource.scanner.maven</groupId>\r\n      <artifactId>sonar-maven-plugin</artifactId>\r\n      <version>3.9.1.2184</version>\r\n    </plugin>\r\n  </plugins>\r\n</build>\r\n```\r\n\r\n\r\n## 四、第一个Maven程序\r\n\r\n### IDEA创建 Maven项目\r\n\r\n打开我们的IDEA，选择 Create New Project\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692885-4OEmlW.png)\\\r\n然后，选择 Maven 项目\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692924-0Uj9e1.png)\\\r\n填写项目信息，然后点击next\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692939-pNwgyt.png)\\\r\n选择工作空间，然后第一个Maven程序就创建完成了\\\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1702692959-SO2QBy.png)\\\r\n以上就是IDEA创建创建第一个 Maven项目的步骤啦，都看到这里了，不要偷懒记得打开电脑和我一起试一试哦。\r\n\r\n### 目录结构\r\n\r\nJava Web 的 Maven 基本结构如下：\r\n\r\n```\r\n├─src\r\n│  ├─main\r\n│  │  ├─java\r\n│  │  ├─resources\r\n│  │  └─webapp\r\n│  │      └─WEB-INF\r\n│  └─test\r\n│      └─java\r\n```\r\n\r\n\r\n结构说明：\r\n\r\n* src：源码目录\r\n* src/main/java：Java 源码目录\r\n* src/main/resources：资源文件目录\r\n* src/main/webapp：Web 相关目录\r\n* src/test：单元测试\r\n\r\n## 小结：\r\n\r\n通过掌握Maven的常用命令和技巧，我们可以更高效地管理Java项目，提高开发效率。希望这篇文章能帮助大家更好地使用Maven。"},"author":{"user":"https://learnblockchain.cn/people/17279","address":null},"history":null,"timestamp":1702718415,"version":1}