Mam oparty na Javie projekt GitHub, fitnessjiffy-spring (obecnie koncentruję się na gałęzi "bootstrap"). To zależy od biblioteki zbudowanej z innego projektu GitHib, fitnessjiff-etl. Próbuję skonfigurować oba te elementy, aby zostały zbudowane przez Travis CI.Travis CI nie korzystając z dodatkowego repozytorium Maven dostępnego w pom.xml
Niestety, Travis nie jest tak wyrafinowany jak Jenkins czy Hudson w radzeniu sobie z projektami Java opartymi na Maven. Jenkins może z łatwością obsługiwać zależności między projektami, ale ta sama koncepcja nie wydaje się istnieć w Travis. Jeśli jeden projekt zależy od innego, to ten drugi projekt musi być już wcześniej zbudowany ... i jego artefakt przesłany do repozytorium Maven, gdzie pierwszy projekt może go później pobrać.
Moja biblioteka "fitnessjiffy-etl" buduje i wdraża dobrze. Używam Bintray dla Maven repozytorium hosting, i można wyraźnie zobaczyć moje artefakty ponad zwykły HTTP pod adresem:
http://dl.bintray.com/steve-perkins/maven/
W moim „fitnessjiffy sprężynowym” projektu, dodaję to Maven lokalizację repo bezpośrednio w pom.xml
, dzięki czemu Travis będzie mógł znaleźć tę zależność od artefaktów. Here is the state of my POM at the time of this writing. Zwróć uwagę na element <repositories>
na dole pliku.
Kiedy buduję ten projekt lokalnie, działa dobrze. Widzę, jak pobierał artefakt Mavena z "http://dl.bintray.com/ ...". Jednak kiedy próbuję budować Travis CI, to za każdym razem się nie udaje. W dzienniku konsoli widzę, że Travis wciąż próbuje pobrać artefakt z Maven Central zamiast z mojego określonego repo.
Czy ma to sens dla kogokolwiek innego? Dlaczego Maven wykorzystuje niestandardową lokalizację repozytorium w pliku POM podczas budowania lokalnie, ale ignoruje tę konfigurację podczas działania w kompilacji Travis CI?