Ich habe ein Java-basiertes GitHub-Projekt, fitnessjiffy-spring (Ich bin derzeit auf den "Bootstrap" Zweig konzentriert). Es hängt von einer Bibliothek ab, die aus einem anderen GitHib-Projekt besteht, fitnessjiff-etl. Ich versuche beide zu konfigurieren, um von Travis CI gebaut zu werden.Travis CI verwendet kein zusätzliches Maven-Repository in pom.xml
Leider ist Travis nicht so anspruchsvoll wie Jenkins oder Hudson im Umgang mit Maven-basierten Java-Projekten. Jenkins kann Abhängigkeiten zwischen Projekten leicht handhaben, aber das gleiche Konzept scheint bei Travis nicht zu existieren. Wenn ein Projekt von einem anderen abhängt, muss dieses andere Projekt bereits zuvor erstellt und sein Artefakt in ein Maven Repo hochgeladen werden, wo das erste Projekt es später herunterladen kann.
Meine "fitnessjiffy-etl" -Bibliothek erstellt und implementiert einfach gut. Ich verwende Bintray für Maven-Repository-Hosting, und Sie können meine Artefakte über Plain-HTTP bei deutlich sehen:
http://dl.bintray.com/steve-perkins/maven/
In meinem "fitnessjiffy-spring" Projekt, Ich füge dieses Maven Repo-Lage direkt in der pom.xml
, damit Travis diese Artefaktabhängigkeit finden kann. Here is the state of my POM at the time of this writing. Beachten Sie das Element <repositories>
am Ende der Datei.
Wenn ich dieses Projekt lokal erstellen, funktioniert es gut. Ich kann es sehen, das Maven-Artefakt von "http://dl.bintray.com/ ..." herunterzuladen. Wenn ich jedoch versuche, Travis CI zu bauen, versagt es jedes Mal. Ich kann im Konsolenprotokoll sehen, dass Travis immer noch versucht, das Artefakt von Maven Central herunterzuladen, anstatt von meinem angegebenen Repo.
Macht das für irgendjemanden Sinn? Warum verwendet Maven beim lokalen Erstellen eines benutzerdefinierten Repository-Speicherorts in einer POM-Datei, ignoriert diese Konfiguration jedoch, wenn es auf einem Travis-CI-Build ausgeführt wird?