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,并执行了预期目标,而不只看任务是否变绿。