繁体   English   中英

Travis CI没有使用pom.xml中提供的额外Maven存储库

[英]Travis CI not using extra Maven repository provided in pom.xml

我有一个基于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 repo位置直接添加到pom.xml ,以便Travis能够找到该工件依赖项。 这是我撰写本文时POM的状态 请注意文件底部的<repositories>元素。

当我在本地构建这个项目时,它工作正常。 我可以看到它从“ http://dl.bintray.com/ ...”下载Maven工件。 但是,当我尝试在Travis CI上构建时,它每次都会失败。 我可以在控制台日志中看到Travis仍在尝试从Maven Central下载工件而不是我指定的repo。

这对其他人有意义吗? 为什么Maven在本地构建时在POM文件中使用自定义存储库位置,但在Travis CI构建上运行时忽略此配置?

从进一步挖掘到这一点,我发现Travis使用自己的Maven Central代理,并已配置Maven通过其代理强制所有依赖请求。 换句话说,目前似乎不可能使用在Travis上构建的项目的POM文件中指定的其他Maven repos。

在我的情况下,我最终重构,使得项目不需要外部JAR依赖。 我也切换到Drone.io,所以我可以在构建服务器上管理我的设置,而不是在我的存储库中携带一个YAML文件(这总是让我觉得有点愚蠢)。

但是,即使在Drone上,管理多个项目之间的依赖关系仍然是一个主要的麻烦(在Java开发中非常常见)。 对于Java,我认为目前没有足够的替代品可以替代Jenkins或Hudson,也许可以运行在廉价的Digital Ocean Droplet或其他VPS提供商实例上。

在安装阶段,添加$HOME/.m2/settings.xml定义您的自定义存储库。

cache:
  directories:
  - "$HOME/.m2"
install:
- curl -o $HOME/.m2/settings.xml
  https://raw.githubusercontent.com/trajano/trajano/master/src/site/resources/settings.xml
- mvn dependency:go-offline
script:
- mvn clean install site

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM