Unser internes Repository (Artifactory) enthält jetzt sowohl die Stable-Builds als auch SNAPSHOT-Versionen unserer internen Bibliotheken.Maven kann SNAPSHOT-Builds aus dem Repository nicht erhalten
Für stabile Builds gab es nie Probleme beim Herunterladen von Dateien aus dem Repository.
Wenn ich jedoch ein -SNAPSHOT hinzufüge, behauptet Maven, die Abhängigkeit nicht finden zu können, obwohl sie definitiv im Repository ist.
Wenn ich die Abhängigkeit lokal erstellen und bereitstellen (d. H. In meinen lokalen Repo), funktioniert alles normal.
Grundsätzlich funktioniert das:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.0</version>
</dependency>
und dies nicht:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
Obwohl beide Versionen die gleiche Art und Weise gebaut und eingesetzt werden (soweit ich vielleicht sagen kann) richtig zum Repository.
Der Fehler:
Missing:
----------
1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) com.example:product:war:2.0.0-SNAPSHOT
2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,
Das klingt ähnlich wie this Frage, die Auflösung bei dort angekommen nicht auf meinen Fall anzuwenden.
Alle Einblicke in dieses Problem würden sehr geschätzt werden.
bearbeiten
mit -X Laufen (als John V. vorgeschlagen) ergab folgendes:
[DEBUG] Skipping disabled repository central
[DEBUG] ourlibrary: using locally installed snapshot
[DEBUG] Skipping disabled repository central
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com)
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository
com.example:ourlibrary:pom:1.0.1-SNAPSHOT
from the specified remote repositories:
repo.example.com (http://repo.example.com/repo)
[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile
[DEBUG] com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile)
Ich habe die repo im POM nicht erklären, sondern in den Maven-Einstellungen festgelegt, dass unsere Repo ein universelles war (*) Spiegel.Sollte das nicht ausreichen (es reicht sicherlich für die stabilen Builds)? Das Hinzufügen einer expliziten Deklaration zu dem POM scheint das Problem zu beheben. – Kris
Ich habe leider nicht viel Arbeit mit der settings.xml für Repositories getan. Ich habe sie in einen Eltern-Pom eingefügt, sodass jeder Entwickler, der neu startet, sich nicht um die settings.xml kümmern muss, falls sich das Repository ändern muss (was es eigentlich für uns hat) –
Ich denke, ich habe das durchdacht. Für stabile Builds wird Maven standardmäßig auf 'central' gesetzt, was meine Spiegeleinstellungen zu unserem Repository weiterleiten. Für SNAPSHOT-Builds gibt es keinen Standard (da central sie nicht behandelt) und in Ermangelung eines POM, der ein Repo spezifiziert (das * SNAPSHOT-Builds * behandelt), wird es einfach fehlschlagen, ohne es selbst zu versuchen. – Kris