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

Travis CI部署库至Bintray报错:build/libs路径不存在

解决Travis CI部署Bintray时build/libs/路径不存在的问题

这问题我之前帮不少开发者排查过,结合你描述的情况(ls验证路径有效但部署阶段报错),咱们可以从这几个方向入手解决:

1. 确认部署阶段的工作目录是否和构建阶段一致

Travis的deploy阶段有时候会悄悄切换工作目录——哪怕你在script阶段用ls build/libs看到文件好好的,部署时可能已经不在项目根目录了。解决办法很直接,在deploy配置里明确指定工作目录:

deploy:
  provider: bintray
  user: YOUR_BINTRAY_USERNAME
  key: YOUR_BINTRAY_KEY
  working_directory: $TRAVIS_BUILD_DIR  # 强制绑定项目根目录
  # 其他配置(比如file或files)...

2. 修正Bintray文件配置的路径写法

很多时候问题出在files配置的格式上,别只写目录,最好明确匹配具体文件,避免插件解析路径时出现歧义:
如果是用bintray.json配置:

{
  "files": [
    {
      "pattern": "build/libs/*.jar",
      "uploadPattern": "libs/[你的groupId]/[你的artifactId]/${version}/[你的artifactId]-${version}.jar"
    },
    {
      "pattern": "build/libs/*.pom",
      "uploadPattern": "libs/[你的groupId]/[你的artifactId]/${version}/[你的artifactId]-${version}.pom"
    }
  ],
  "publish": true
}

如果直接在.travis.yml里写files:

deploy:
  # 其他配置...
  files:
    - "build/libs/*.jar"
    - "build/libs/*.pom"

注意别在路径末尾加多余的斜杠(比如把build/libs/改成build/libs或者直接匹配文件),这很容易触发路径解析bug。

3. 在部署前强制重新构建,确保产物新鲜存在

有时候Travis的缓存或者之前的构建残留会让你误以为文件存在,但实际本次构建可能没生成产物。可以在before_deploy阶段重新执行构建命令,把产物打扎实:

before_deploy:
  - ./gradlew clean build  # Gradle项目用这个
  # Maven项目换成:- mvn clean package
  - ls -la build/libs/  # 再次验证文件,方便后续排查

4. 扒一扒Travis日志的部署阶段细节

去Travis的构建日志里找到部署阶段的输出,看看实际工作目录是什么,有没有执行过cd之类的命令,或者Bintray插件有没有输出更详细的路径报错信息。比如可以在before_deploy里加个pwd命令确认当前位置:

before_deploy:
  - pwd  # 打印当前工作目录,一目了然

按照这几个步骤排查,大概率能解决路径不存在的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:32:46