ChatGPT解决这个技术问题 Extra ChatGPT

列出 Maven 2 中所有可能的目标?

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

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

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

如果没有 xml 页面,maven 无法回答这个问题,这让我抓狂!好东西!

R
Ry-

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

验证:验证项目是否正确并且所有必要的信息都可用。

compile:编译项目的源代码。

测试:使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码。

package:获取编译后的代码,并将其打包成可分发的格式,例如 JAR。

集成测试:如有必要,处理包并将其部署到可以运行集成测试的环境中。

验证:运行任何检查以验证包是否有效并符合质量标准

install:将包安装到本地仓库,作为本地其他项目的依赖。

部署:在集成或发布环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。

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


查看生命周期参考。那里列出了所有生命周期部分。
P
Pascal Thivent

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

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

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

为使工作正常进行,首先按照 this guide 在您的计算机上设置 bash 完成。然后,是时候为 Maven2 获取脚本了:

虽然您可以使用迷你指南中的那个

当您使用附加到 MNG-3928 的改进版本时

虽然您可以使用在网上找到的随机脚本(如果您好奇,请参阅资源)

我个人使用 Ludovic Claude 的 PPA 中的 Bash Completion 脚本(捆绑在 Ubuntu 中的 maven 打包版本中),您可以从 HEAD 下载该脚本。这简直是最好的。

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

$ mvn [tab][tab]
Display all 377 possibilities? (y or n)
ant:ant 
ant:clean 
ant:help 
antrun:help 
antrun:run 
archetype:crawl 
archetype:create 
archetype:create-from-project 
archetype:generate 
archetype:help 
assembly:assembly 
assembly:directory 
assembly:directory-single 
assembly:help 
assembly:single  
...

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

资源

使用 BASH 的 Maven 2.x 自动完成指南

在 CYGWIN 上修复 Maven 2.x BASH 自动完成

Maven bash 完成

maven2 bash 完成完成

Bash 中的 Maven 选项卡自动完成

Maven 2 的高级 Bash 完成脚本


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

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

mvn help:describe -e -Dplugin=site

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

名称:Apache Maven Site Plugin 描述:Maven Site Plugin 是一个为当前项目生成站点的插件。组 ID:org.apache.maven.plugins 工件 ID:maven-site-plugin 版本:3.7.1 目标前缀:site 这个插件有 9 个目标:site:attach-descriptor 描述:将站点描述符(site.xml)添加到要安装/部署的文件列表。对于 Maven-2.x,仅当项目具有 pom 打包时才默认启用,因为它将被模块继承使用,但如果需要,可以为其他项目打包启用此功能。此默认执行已从 Maven 3.x 的 pom-projects 的内置生命周期中删除。实际使用这些项目为子模块提供公共站点描述符的用户将需要明确定义此目标执行以恢复预期行为。 site:deploy 描述:使用 wagon 支持的协议将生成的站点部署到 POM 部分中指定的站点 URL。对于 scp 协议,网站文件由 wagon 打包成 zip 存档,然后将存档传输到远程主机,然后取消存档,这比逐个文件复制要快得多。 site:effective-site 描述:在继承和插入 site.xml 之后,针对第一个语言环境,将有效站点描述符显示为此构建的 XML。 site:help 描述:显示关于 maven-site-plugin 的帮助信息。调用 mvn site:help -Ddetail=true -Dgoal= 显示参数详细信息。 site:jar 描述:将站点输出捆绑到 JAR 中,以便可以将其部署到存储库。 site:run 描述:启动站点,根据要求呈现文档以加快编辑速度。它使用 Jetty 作为 Web 服务器。 site:site 描述:为单个项目生成站点。请注意,多模块构建中的模块站点之间的链接将不起作用,因为本地构建目录结构与部署站点不匹配。 site:stage 描述:根据 POM 部分中指定的站点 URL,将生成的站点部署到本地暂存或模拟目录。它可用于测试多模块构建工作中模块站点之间的链接。此目标要求站点已经使用站点目标生成,例如通过调用 mvn site. site:stage-deploy 描述:使用 wagon 支持的协议将生成的站点部署到 POM 部分中指定的站点 URL 的暂存或模拟 URL 有关更多信息,请运行 'mvn help:describe [...] -Ddetail '

有关 https://mkyong.com/maven/how-to-display-maven-plugin-goals-and-parameters/ 的更多详细信息


例如对于弹簧启动: mvn help:describe -e -Dplugin=spring-boot
D
Denys Kniazhev-Support Ukraine

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

https://i.stack.imgur.com/KVD5t.png


我想通过一些命令来做到这一点。 IntelliJ IDEA 是如何做到的?
A
Aguid

构建生命周期由阶段组成

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

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

验证 - 验证项目是否正确并且所有必要的信息都可用

compile - 编译项目的源代码

测试 - 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码

package - 获取编译后的代码并将其打包成可分发的格式,例如 JAR。验证 - 对集成测试的结果进行任何检查,以确保满足质量标准

install - 将包安装到本地存储库中,作为本地其他项目的依赖项

deploy - 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。

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

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


m
mario

让它变得非常简单:

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

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

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

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