【发布时间】:2014-11-09 16:34:12
【问题描述】:
我有一个基于 Java 的 GitHub 项目,fitnessjiffy-spring(我目前专注于“bootstrap”分支)。它依赖于从另一个 GitHib 项目 fitnessjiff-etl 构建的库。我正在尝试将这两个配置为由 Travis CI 构建。
不幸的是,Travis 在处理基于 Maven 的 Java 项目方面不如 Jenkins 或 Hudson 成熟。 Jenkins 可以轻松处理项目之间的依赖关系,但 Travis 似乎不存在相同的概念。如果一个项目依赖于另一个项目,那么该其他项目必须已经在之前构建过......并且它的工件上传到某个 Maven 存储库,第一个项目可以稍后下载它。
我的“fitnessjiffy-etl”库正在构建和部署得很好。我正在使用 Bintray 托管 Maven 存储库,您可以在以下位置通过纯 HTTP 清楚地看到我的工件:
http://dl.bintray.com/steve-perkins/maven/
在我的“fitnessjiffy-spring”项目中,我将这个 Maven 存储库位置直接添加到 pom.xml 中,以便 Travis 能够找到该工件依赖项。 Here is the state of my POM at the time of this writing。请注意文件底部的<repositories> 元素。
当我在本地构建这个项目时,它工作得很好。我可以看到它从“http://dl.bintray.com/...”下载了 Maven 工件。但是,当我尝试在 Travis CI 上构建时,它每次都会失败。我可以在控制台日志中看到 Travis 仍在尝试从 Maven Central 下载工件,而不是我指定的 repo。
这对其他人有意义吗?为什么 Maven 在本地构建时会使用 POM 文件中的自定义存储库位置,但在 Travis CI 构建上运行时会忽略此配置?
【问题讨论】:
标签: java maven github travis-ci bintray