Nasze wewnętrzne repozytorium (Artifactory) zawiera teraz zarówno stabilne kompilacje, jak i wersje SNAPSHOT naszych wewnętrznych bibliotek.Maven nie może uzyskać kompilacji SNAPSHOT z repozytorium
Dla stabilnych kompilacji nigdy nie było problemu z pobieraniem czegokolwiek z repozytorium.
Jednak po dodaniu -SNAPSHOT, Maven twierdzi, że nie może znaleźć zależności, nawet jeśli jest to zdecydowanie w repozytorium.
Jeśli buduję i wdrażam zależność lokalnie (tj. W moim lokalnym repozytorium), wszystko działa normalnie.
zasadzie to działa:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.0</version>
</dependency>
i to nie:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
Choć obie wersje zostały zbudowane w ten sam sposób i stosowane (o ile mogę ewentualnie powiedzieć) poprawnie do repozytorium.
Błąd:
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,
Choć brzmi to podobnie do this pytaniu rozdzielczości przybył tam nie ma zastosowania do mojego przypadku.
Wszelkie spostrzeżenia na ten temat byłyby bardzo mile widziane.
Edit
Biegając z -x (jako John V. sugerowane) ujawniła następujące:
[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)
nie deklarują repo w POM, ale raczej określony w ustawieniach maven że nasza repo był uniwersalny (*) lustro.Czy nie powinno to być wystarczające (na pewno wystarczy na stabilne konstrukcje)? Dodanie wyraźnej deklaracji do POM wydaje się rozwiązać problem. – Kris
Niestety nie wykonałem zbyt wiele pracy z plikiem settings.xml dla repozytoriów. Zawarłem je w macierzystej pompce, więc każdy programista rozpoczynający pracę, nie musi się martwić o plik settings.xml, na wypadek gdyby repozytorium musiało się zmienić (co faktycznie ma dla nas). –
Myślę, że już to zrozumiałem. W przypadku stabilnych kompilacji, Maven będzie domyślnie "centralną", którą moje ustawienia lustrzane przekierowują do naszego repozytorium. W przypadku kompilacji SNAPSHOT nie ma wartości domyślnej (ponieważ centrala nie obsługuje ich) i w przypadku braku POM określającego repo (które * obsługuje * kompilacje SNAPSHOT), po prostu nie powiedzie się, nawet nie próbując wyszukać. – Kris