You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BitBucket流水线执行zip命令报错:文件匹配失败排查

BitBucket流水线zip打包EAR文件匹配失败问题分析

正常示例

某应用执行以下命令可正常完成打包:

zip powwow.zip appspec.yml target/pow-wow-0.0.2-SNAPSHOT.jar scripts/*
  adding: appspec.yml (deflated 26%)
  adding: target/pow-wow-0.0.2-SNAPSHOT.jar (deflated 9%)
  adding: scripts/deploy.sh (deflated 37%)
  adding: scripts/powwow-deploy-old.sh (deflated 37%)
  adding: scripts/powwow-deploy.sh (deflated 53%)

文件夹结构:

- pom.xml
- appspec.yml
- scripts/
  - powwow-deploy.sh
- target/
  - pow-wow-0.0.2-SNAPSHOT.jar

所有文件均按预期打包进powwow.zip。

异常示例

另一应用执行类似命令时出现警告,无法匹配EAR文件:

zip -r corpapp.zip appspec.yml corporateEAR/target/cEAR-3.10.ear scripts/*
    zip warning: name not matched: corporateEAR/target/cEAR-3.10.ear
  adding: appspec.yml (deflated 25%)
  adding: scripts/corpapp-deploy.sh (deflated 42%)

文件夹结构:

- pom.xml
- appspec.yml
- scripts/
  - corpapp-deploy.sh
- corporateEAR/
  - target/
    - cEAR-3.10.ear

补充说明:该命令在本地机器执行可正常生成压缩包,但在BitBucket流水线中运行时出现文件匹配失败警告。


可能的原因及验证方法

  • 子模块EAR文件未在流水线中生成
    本地环境中你可能已提前执行子模块的构建命令(如mvn install或mvn package),但BitBucket流水线的构建流程可能仅执行了根模块构建,未触发corporateEAR子模块的编译打包,导致corporateEAR/target/目录下不存在目标EAR文件。
    验证:在zip命令前添加ls -l corporateEAR/target/,查看输出是否包含cEAR-3.10.ear。

  • 流水线工作目录与本地不一致
    本地是在项目根目录执行zip命令,但流水线步骤可能切换了工作目录(如cd到子文件夹),此时相对路径corporateEAR/target/cEAR-3.10.ear指向错误位置,导致文件找不到。
    验证:在zip命令前添加pwd命令,确认当前工作目录是否为项目根目录。

  • 路径大小写不匹配
    BitBucket流水线通常运行在Linux环境,文件系统大小写敏感;而本地如果是Windows或默认配置的macOS,文件系统大小写不敏感。若流水线中实际文件夹/文件名与命令路径存在大小写差异(如实际是CorporateEAR但命令写corporateEAR),会出现匹配失败。
    验证:在流水线中执行ls -l查看根目录子文件夹名称,确认与命令路径完全一致。

  • 构建缓存或产物清理问题
    流水线可能启用了构建缓存,或前一次构建产物被清理,导致corporateEAR/target/未生成新的EAR文件。
    验证:在构建步骤添加mvn clean package(针对Maven项目),强制清理并重新构建子模块。


内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:05:17