我有一个基于 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 能够找到该工件依赖项。 这是撰写本文时我的 POM 的状态。注意<repositories>
文件底部的元素。
当我在本地构建这个项目时,它工作得很好。我可以看到它从“ http://dl.bintray.com/ ...”下载了 Maven 工件。但是,当我尝试在 Travis CI 上构建时,它每次都会失败。我可以在控制台日志中看到 Travis 仍在尝试从 Maven Central 下载工件,而不是我指定的 repo。
这对其他人有意义吗?为什么 Maven 在本地构建时使用 POM 文件中的自定义存储库位置,但在 Travis CI 构建上运行时忽略此配置?