【问题标题】:List all of the possible goals in Maven 2?列出 Maven 2 中所有可能的目标?
【发布时间】:2011-04-29 03:34:58
【问题描述】:

我是 Maven 新手,来自 Ant 世界。

是否可以列出您可以运行的所有可能目标(例如,包括所有插件)?

我可以看到 Maven 1 中曾经有一个 -g 标志,但这在版本 2 中不可用。

【问题讨论】:

标签: java maven-2


【解决方案1】:

您在命令行中指定的目标链接到 Maven 的lifecycle。例如,build 生命周期(您也有不同的 cleansite 生命周期)由以下阶段组成:

  • validate:验证项目是否正确并且所有必要的信息都可用。
  • compile:编译项目源码。
  • test:使用合适的单元测试框架测试编译后的源代码。这些测试不应要求打包或部署代码。
  • package:获取编译后的代码并将其打包成可分发的格式,例如 JAR。
  • integration-test:如有必要,处理包并将其部署到可以运行集成测试的环境中。
  • verify:运行任何检查以验证包是否有效并符合质量标准
  • install:将包安装到本地仓库,作为本地其他项目的依赖。
  • deploy:在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。

您可以找到“核心”插件列表here,但还有很多其他插件,例如codehaus 的here

【讨论】:

  • 查看生命周期参考。那里列出了所有生命周期部分。
【解决方案2】:

是否可以列出所有可能运行的目标(例如,包括所有插件)?

Maven 没有为此内置任何东西,尽管phases 的列表是有限的(插件目标 的列表不是,因为插件列表不是)。

但是您可以使事情变得更简单,并利用bash completion 的强大功能(如果您在 Windows 下使用 cygwin),如Guide to Maven 2.x auto completion using BASH 中所述(但在从本指南中选择脚本之前,请进一步阅读)。

要让事情顺利进行,请首先关注 this guide 在您的计算机上设置 bash 完成。然后,是时候为 Maven2 获取脚本了:

下面,我得到的只是为了说明结果:

$ mvn [标签] [标签] 显示所有 377 种可能性? (是或否) 蚂蚁:蚂蚁 蚂蚁:干净 蚂蚁:帮助 antrun:帮助 蚂蚁运行:运行 原型:爬行 原型:创建 原型:从项目创建 原型:生成 原型:帮助 组装:组装 程序集:目录 程序集:目录单 组装:帮助 组装:单个 ...

当然,我从不浏览 377 种可能性,我使用完成。但这让您了解“a”列表的大小:)

资源

【讨论】:

  • 还没看,但新的Maven Shell 工具是否提供自动完成功能,在这里可能有用吗?
  • @romain 不,mvnsh 不提供补全(至少在我机器上的版本中不提供)。我在回答之前检查了:)
【解决方案3】:

如果您使用 IntelliJ IDEA,您可以在 Maven Projects 标签中浏览所有 maven 目标/任务(包括插件):

【讨论】:

  • 我想通过一些命令来做到这一点。 IntelliJ IDEA 是如何做到的?
【解决方案4】:

奇怪的是没有人列出一个实际的命令来做到这一点:

mvn help:describe -e -Dplugin=site

如果您想列出site 插件的所有目标。输出:

名称:Apache Maven 站点插件描述:Maven 站点插件是一个 为当前项目生成站点的插件。组号: org.apache.maven.plugins 工件 ID:maven-site-plugin 版本:3.7.1 目标前缀:网站

这个插件有 9 个目标:

site:attach-descriptor 描述:添加站点描述符 (site.xml) 到文件列表 安装/部署。 对于 Maven-2.x,仅当项目有 pom 时才默认启用 打包,因为它将被继承的模块使用,但这可以是 如果需要,为其他项目打包启用。 此默认执行已从内置生命周期中删除 用于 pom 项目的 Maven 3.x。实际使用这些项目的用户 为子模块提供公共站点描述符将需要明确 定义此目标执行以恢复预期的行为。

site:deploy 描述:使用 wagon 部署生成的站点 支持的协议 在 POM 部分中指定的站点 URL。 对于 scp 协议,网站文件由 wagon 打包成 zip 存档, 然后将存档传输到远程主机,然后取消存档 这比逐个文件复制要快得多。

site:effective-site 说明:显示有效站点 作为 XML 的描述符 在 site.xml 的继承和插值之后构建,用于第一个 语言环境。

site:help 描述:显示帮助信息 Maven 站点插件。 调用 mvn site:help -Ddetail=true -Dgoal= 显示参数 详情。

site:jar 描述:将站点输出捆绑到一个 JAR 中,以便它 可以部署 到存储库。

site:run 描述:启动站点,将文档呈现为 要求 更快的编辑。它使用 Jetty 作为 Web 服务器。

site:site 描述:为单个项目生成站点。 请注意,多模块构建中的模块站点之间的链接将不起作用, 因为本地构建目录结构与部署站点不匹配。

site:stage 描述:将生成的站点部署到本地 分期或模拟 目录中指定的站点 URL POM 部分。 它可用于测试多模块中模块站点之间的链接 构建工作。

此目标要求该网站已经使用该网站生成 目标,例如通过调用 mvn site。

site:stage-deploy 描述:将生成的站点部署到 暂存或模拟 URL 到 在 POM 部分中指定的站点 URL, 使用 wagon 支持的协议

有关更多信息,请运行 'mvn help:describe [...] -Ddetail'

更多详情请关注https://mkyong.com/maven/how-to-display-maven-plugin-goals-and-parameters/

【讨论】:

  • 例如对于 spring boot:mvn help:describe -e -Dplugin=spring-boot
【解决方案5】:

构建生命周期由阶段组成

每个构建生命周期都由不同的构建阶段列表定义,其中构建阶段代表生命周期中的一个阶段。

例如,默认生命周期包含以下阶段(有关生命周期阶段的完整列表,请参阅生命周期参考):

  • 验证 - 验证项目是否正确并且所有必要的信息都可用
  • compile - 编译项目的源代码
  • test - 使用合适的单元测试编译的源代码 测试框架。这些测试不应该要求代码 打包或部署
  • package - 获取编译后的代码并打包 以其可分发的格式,例如 JAR。验证 - 运行任何检查 根据集成测试的结果来确保满足质量标准
  • install - 将软件包安装到本地存储库中,用作 本地其他项目的依赖
  • deploy - 在构建环境中完成,将最终包复制到远程存储库 与其他开发者和项目共享。

这些生命周期阶段(以及此处未显示的其他生命周期阶段)按顺序执行以完成默认生命周期。鉴于上述生命周期阶段,这意味着当使用默认生命周期时,Maven 将首先验证项目,然后将尝试编译源代码,针对测试运行它们,打包二进制文件(例如 jar),针对该项目运行集成测试打包,验证集成测试,将经过验证的包安装到本地仓库,然后将安装的包部署到远程仓库。

来源:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

【讨论】:

    【解决方案6】:

    让我们让它变得非常简单:

    Maven 生命周期: 1.清洁 2. 默认(构建) 3. 网站

    默认生命周期的 Maven 阶段: 1. 验证 2. 编译 3. 测试 4. 包装 5. 验证 6.安装 7. 部署

    注意: 不要将 maven 目标与 maven 生命周期混淆或混淆。

    请参阅 Maven 构建生命周期基础知识1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 2021-03-05
      相关资源
      最近更新 更多