Pracuję nad dość dużym projektem Mavena. Mamy prawdopodobnie około 70 pojedynczych artefaktów, które są z grubsza podzielone na dwie biblioteki współdzielonego kodu i może dziesięć aplikacji, które ich używają. Wszystkie te elementy znajdują się w przestrzeni nazw com.mycompany.*
.
Przez większość czasu korzystamy z kompilacji migawek. Tak więc, aby wykonać pełną kompilację aplikacji, mógłbym najpierw zbudować projekty bibliotek, aby zostały zainstalowane w moim lokalnym repozytorium (jak powiedzmy mycompany-libname-2.4-SNAPSHOT.jar
).
Problem w tym, że kiedy zaczynam budować aplikacje. Z jakiegoś powodu Maven chce sprawdzić dwa główne repozytoria publiczne (maven-net-repo i java-net-repo) pod kątem aktualizacji wszystkich mycompany-*-SNAPSHOT.jar
artefaktów. Oczywiście ich tam nie ma i wszystko w końcu wraca do wersji, które właśnie zbudowałem w moim lokalnym repozytorium, ale chciałbym, aby Maven przestał to robić, ponieważ (a) sprawia, że czuję się jak zła sieć. Obywatel za ciągłe sprawdzanie tych repozytoriów pod kątem rzeczy, których nigdy tam nie będzie, oraz (b) dodaje niepotrzebne i irytujące opóźnienia sieciowe do mojego procesu kompilacji.
Przez większość czasu korzystałem z Mavena w trybie offline, aby obejść ten problem, ale nie jest to idealne rozwiązanie, ponieważ czasami zależność od biblioteki publicznej zostanie zaktualizowana. Poszukuję więc rozwiązania, które spowoduje, że Maven nie będzie sprawdzał aktualizacji z danych repozytoriów pod kątem artefaktów spełniających określone kryteria - w tym przypadku byłbym szczęśliwy, gdyby Maven zignorował wersje SNAPSHOT lub artefakty, które były w com.mycompany
nazw.