Jenkins 配置 Maven 构建时,填入终端里熟悉的命令,却出现:

Unknown lifecycle phase "mvn"

这通常提示:负责启动 Maven 的入口已经把后面的内容当作目标参数,而你又把可执行程序名 mvn 填了进去。

先确认输入框接受的是命令还是目标

调用位置示例
Maven 专用任务的 Goals and options 字段clean verify
Shell 构建步骤mvn -B clean verify
使用项目 Maven Wrapper 的 Shell 步骤./mvnw -B clean verify

Maven 目标字段中,额外的 mvn 可能被解释成生命周期阶段,于是报“未知阶段”。Shell 中则通常需要启动可执行程序,不能机械删掉前缀。

先看任务类型和实际控制台命令,再修改对应位置;不要把 Jenkins 的目标解析错误解释成“Eclipse 已经集成 Maven”。

没有 Maven 项目入口,是另一类问题

Maven Integration 插件提供 Maven 项目类型。需要这个任务类型时,检查插件是否启用、是否与 Jenkins 和 Java 环境兼容。Maven Integration

但它不是所有 Maven 构建方式的必需插件。自由风格任务的 Shell 步骤或 Pipeline 也可以调用已有 Maven/Wrapper。不要因为一个旧教程里有某个菜单,就要求所有任务先安装相同插件。

找不到 Maven 安装,也不是目标写错

另一条常见提示为:

Jenkins needs to know where your Maven is installed

这时应在实际构建节点核对 Maven 工具名称、安装目录、JDK 和 PATH,而不只是修改 goals。可以在同一个 agent 环境查看:

mvn -v
java -version

在声明式 Pipeline 中,tools 引用的名称须与 Jenkins 已配置的工具名称对应;若使用 Wrapper,则还要检查项目文件、执行权限和运行环境。Pipeline tools

自动安装还是预配置工具,取决于环境策略;不是“一律不能勾自动安装”。修复后应在控制台确认使用了预期 Maven/JDK,并执行了预期目标,而不只看任务是否变绿。