首页 > 其他分享 >高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇三)

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇三)

时间:2024-10-08 17:53:33浏览次数:7  
标签:架构设计 插件 Maven 构建 模块 图解 maven mvn

在这里插入图片描述

Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(Project Object Model)的XML文件来描述项目的构建过程、依赖、插件等信息。

肖哥弹架构 跟大家“弹弹” 高并发锁, 关注公号回复 ‘mvcc’ 获得手写数据库事务代码

欢迎 点赞,关注,评论。

关注公号Solomon肖哥弹架构获取更多精彩内容

历史热点文章

0、本节范围

在这里插入图片描述

1、maven 命令规则与实战

1.1 mvn 语法结构

在这里插入图片描述

Maven 的命令行语法基于一个简单的结构,允许你执行各种构建和依赖管理任务。以下是 Maven 命令的基本语法结构:

mvn [options] [<goal(s)>] [<phase(s)>]

各部分解释:

  • [options] : 可选参数,用于修改 Maven 命令的行为。例如,-U 用于更新依赖,-X 用于调试。
  • [<goal(s)>] : Maven 插件的目标。这指定了要执行的任务,例如 compiletestinstall 等。
  • [<phase(s)>] : Maven 构建生命周期的阶段。Maven 会按照生命周期的阶段顺序执行任务,但你也可以指定特定的阶段来执行。

下是这些参数的一些常见值和选项:

[options] - Maven 命令行选项

Maven 命令行选项用于修改 Maven 的行为。这些选项通常以 -D-U 等形式出现:

  • -U, --update-snapshots: 强制检查并更新项目的快照依赖。
  • -X, --debug: 运行 Maven 在调试模式下,提供详细的调试信息。
  • -e, --error-stack: 打印错误栈信息。
  • -ff, --fail-fast: 在第一个构建失败时停止构建。
  • -q, --quiet: 仅打印错误信息。
  • -T, --thread: 指定构建时使用的线程数。
  • -Dproperty=value: 设置一个属性值。
  • -P, --profile: 指定要激活的 Maven 配置文件。
[<goal(s)>] - Maven 插件目标

Maven 插件目标定义了要执行的具体任务。这些目标由 Maven 插件提供,例如 compiletest 等:

  • clean: 清理构建产物。
  • compile: 编译源代码。
  • test: 运行测试。
  • install: 安装构建产物到本地仓库。
  • deploy: 将构建产物部署到远程仓库。
  • site: 生成项目文档和报告。
  • jar:jar: 创建 JAR 文件。
  • war:war: 创建 WAR 文件。

除了这些核心目标,还有许多其他目标由各种 Maven 插件提供。例如:

  • maven-compiler-plugin:compile: 使用编译插件编译 Java 代码。
  • maven-surefire-plugin:test: 使用 Surefire 插件运行单元测试。
  • maven-jar-plugin:jar: 使用 JAR 插件创建 JAR 文件。
  • maven-war-plugin:war: 使用 WAR 插件创建 WAR 文件。
[<phase(s)>] - Maven 构建生命周期阶段

Maven 构建生命周期阶段定义了 Maven 在构建过程中的各个阶段:

  • validate: 验证项目可以被构建。
  • initialize: 初始化构建。
  • generate-sources: 生成源代码。
  • process-sources: 处理源代码。
  • generate-resources: 生成资源文件。
  • process-resources: 复制并处理资源文件到目标目录。
  • compile: 编译项目的源代码。
  • process-classes: 处理编译生成的类文件。
  • generate-test-sources: 生成测试源代码。
  • process-test-sources: 处理测试源代码。
  • generate-test-resources: 生成测试资源。
  • process-test-resources: 复制并处理测试资源文件到目标目录。
  • test-compile: 编译测试源代码。
  • process-test-classes: 处理测试编译生成的类文件。
  • test: 运行测试。
  • prepare-package: 准备打包。
  • package: 将编译的代码打包成 JAR、WAR 或其他格式。
  • pre-integration-test: 在集成测试执行之前准备。
  • integration-test: 执行集成测试。
  • post-integration-test: 集成测试执行之后的工作。
  • verify: 验证包是否符合质量标准。
  • install: 安装包到本地仓库。
  • deploy: 将最终的包部署到远程仓库。

这些阶段反映了 Maven 的标准构建生命周期,每个阶段都可以执行一系列预定义的任务。

1.2 mvn 常用命令
1.2.1. 构建项目
  • mvn clean: 清理项目,删除 target 目录。
  • mvn compile: 编译项目的源代码。
  • mvn test: 运行单元测试。
  • mvn package: 打包项目。
  • mvn verify: 运行所有检查,确保项目可以部署。
  • mvn install: 安装项目到本地仓库。
  • mvn deploy: 将项目部署到远程仓库。
1.2.2. 生成项目报告
  • mvn site: 生成项目报告。
  • mvn javadoc:javadoc: 生成 JavaDoc 文档。
  • mvn surefire-report:report: 生成测试报告。
1.2.3. 项目信息
  • mvn dependency:tree: 显示项目的依赖树。
  • mvn dependency:list: 列出项目的所有依赖。
  • mvn archetype:generate: 生成一个新的 Maven 项目。
1.2.4. 项目配置
  • mvn versions:display: 显示项目的版本信息。
  • mvn versions:use: 升级或降级项目的依赖版本。
1.2.5. 运行和管理
  • mvn exec:java: 运行主类。
  • mvn tomcat7:run: 运行项目在 Tomcat 服务器上。
  • mvn jetty:run: 运行项目在 Jetty 服务器上。
1.2.6. 其他
  • mvn help:effective-pom: 显示项目的有效的 POM。
  • mvn help:describe: 描述一个 Maven 目标。
  • mvn enforcer:enforce: 执行 Maven 强制规则。
1.2.7. Maven 插件命令

每个 Maven 插件可以提供自己的目标(goals),你可以通过 mvn <groupId>:<artifactId>:<goal> 格式调用它们。

案例

要获取 Maven 项目中所有可用命令的列表,你可以使用以下命令:

mvn help:describe -Dcmd=list

要获取特定 Maven 插件的可用目标列表,可以使用:

mvn <groupId>:<artifactId>:help

例如,要获取 maven-compiler-plugin 的帮助信息,可以使用:

mvn org.apache.maven.plugins:maven-compiler-plugin:help
1.3 mvn 命令格式

在这里插入图片描述

Maven 命令格式说明
  • Maven 命令: 执行 Maven 构建的工具。
  • [options] : Maven 命令行选项,用于修改 Maven 的行为(例如 -U, -X)。
  • [goal] : Maven 插件的目标。
  • [phase] : Maven 构建生命周期的阶段。
  • [plugin-group] : Maven 插件的组ID。
  • [plugin-artifact] : Maven 插件的项目ID。
  • [plugin-version] : Maven 插件的版本。
  • [plugin-goal] : 要执行的 Maven 插件目标。
  • project coordinates: 项目坐标,包括 groupId、artifactId、version,以及可选的分类器(Classifier)。
案例

一个完整的 Maven 命令可能看起来像这样:

mvn org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile -DskipTests
  • mvn: Maven 命令。
  • org.apache.maven.plugins: 插件的 groupId。
  • maven-compiler-plugin: 插件的 artifactId。
  • 3.8.1: 插件的 version。
  • compile: 要执行的插件目标(goal)。
  • -DskipTests: 一个命令行选项,用来跳过测试。
    或者,对于 Maven 内置的生命周期阶段,命令可能更简单:
mvn clean install
  • clean: 生命周期的阶段,相当于执行 mvn clean:clean
  • install: 另一个生命周期的阶段。

这个结构图提供了 Maven 命令的详细视图,展示了 Maven 命令的各个组成部分和它们之间的关系,并使用了不同的颜色来区分各个部分。

1.4 mvn 命令特殊格式
为什么有时有冒号,有时没有?
  1. 没有冒号: 当你只指定 <goal> 时,通常不需要冒号。这种情况通常发生在该 <goal> 属于一个在 Maven 中已经通过 <groupId><artifactId> 定义的插件时。
  2. 有冒号: 当你需要指定完整的插件坐标(<groupId>:<artifactId>:<goal>)时,冒号用于分隔这些部分。
案例说明
  • mvn clean: 这个命令使用 maven-clean-plugin 插件的 clean 目标。因为 clean 目标是 Maven 核心插件的一部分,所以不需要指定完整的坐标。
  • mvn compile: 类似于 mvn clean,这个命令使用 maven-compiler-plugin 插件的 compile 目标。
  • mvn test: 这个命令执行 maven-surefire-plugin 插件的 test 目标。
  • mvn package: 使用 maven-jar-plugin 插件的 jar 目标。
  • mvn verify**

    标签:架构设计,插件,Maven,构建,模块,图解,maven,mvn
    From: https://blog.csdn.net/alises1314/article/details/142764897

相关文章

  • 高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇三)
    Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(ProjectObjectModel)的XML文件来描述项目的构建过程、依赖、插件等信息。肖哥弹架构 跟大家“弹弹” 高并发锁,  关注公号回复'mvcc'获得手写数据库事务代码欢迎点赞,关注,评论。关注......
  • 飘香水果购物网站:基于SpringBoot的架构设计
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇二)
    Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(ProjectObjectModel)的XML文件来描述项目的构建过程、依赖、插件等信息。肖哥弹架构 跟大家“弹弹” 高并发锁,  关注公号回复'mvcc'获得手写数据库事务代码欢迎点赞,关注,评论。关注......
  • 常见问题解决 --- maven手动安装依赖jar包报错
    报错内容:执行命令mvninstall:install-file-DgroupId=com.beidouapp-DartifactId=SSDK-Dversion=4.0.2.0 -Dfile=C:\1\SSDK-Release-4.0.2.0.jar-Dpackaging=jar报错Unknownlifecyclephase“.ggstar“.Youmustspecifyavalidlifecyclephaseoragoal原因:在pow......
  • 全面图解Docker架构设计:掌握Docker全链路思维与优化(命令篇)
    Docker是一个革命性的开放平台,用于开发、交付和运行应用程序。通过使用Docker,开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何支持Docker的环境中,在不同环境中实现一致的运行。无论是在虚拟机、物理服务器、数据中心还是云平台,Docker都能确保......
  • 全面图解Docker架构设计:掌握Docker全链路思维与优化(命令篇)
    Docker是一个革命性的开放平台,用于开发、交付和运行应用程序。通过使用Docker,开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何支持Docker的环境中,在不同环境中实现一致的运行。无论是在虚拟机、物理服务器、数据中心还是云平台,Docker都能确......
  • 高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇一)
    Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(ProjectObjectModel)的XML文件来描述项目的构建过程、依赖、插件等信息。肖哥弹架构跟大家“弹弹”高并发锁,关注公号回复'mvcc'获得手写数据库事务代码欢迎点赞,关注,评论。关注公号S......
  • 全面图解Docker架构设计:掌握Docker全链路思维/实战/优化(小白到大师篇[2])
    Docker是一个革命性的开放平台,用于开发、交付和运行应用程序。通过使用Docker,开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何支持Docker的环境中,在不同环境中实现一致的运行。无论是在虚拟机、物理服务器、数据中心还是云平台,Docker......
  • Maven的下载安装(2024最新详细版~)
    1.1、进入Maven的官网地址,下载:Maven–DownloadApacheMaven2.解压安装包到自己的安装目录3.配置环境变量3.1配置到系统Path中3.2验证安装mvn-version4.本地仓库和Settings文件配置4.1、创建自定义仓库,修改settings文件5.AI大模型手册......
  • 使用Maven创建多模块项目
    主项目:pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/......