2012-04-16 19 views
15

Chciałbym sprawdzić z wiersza poleceń, czy pewna współrzędna (groupId.artifactId.version) można znaleźć w repozytorium.Jak ustalić, czy artefakt Maven jest w moim repozytorium z linii poleceń?

Jeśli to możliwe, czy można to zrobić z częściowymi współrzędnymi (np. artifactId.version)? Czy mogę określić repozytorium?

Nie pytam dla obejścia - może po prostu rozpocząć wyszukiwanie plików w moich lokalnych repo lub wprowadź artefakt w POM i czekać na błędy lub zainstaluj Nexus i przeszukiwać UI ...

Jest to wygoda - raz na CLI byłoby miło móc szybko sprawdzić.

+0

Rozważ skonfigurowanie menedżera repozytorium, takiego jak Nexus lub Artifactory. Oba zapewniają internetowe GUI do wyszukiwania –

+1

@ MarkO'Connor Dzięki, jestem zaznajomiony z nexusem i używam go w pracy, ale na moim osobistym laptopie uważam to za przesadę (z zaćmieniem, jenkins i przeglądarką dzielącą mój RAM między siebie, ponieważ is) – kostja

+1

Zrozumiałem, ale odkryłem, że Nexus jest bardzo lekki i szczerze mówiąc nie mogę bez niego żyć. Wykonuję wiele kompilacji po odłączeniu od sieci i stwierdzam, że Nexus działa lepiej jako pamięć podręczna repozytorium. –

Odpowiedz

16

Oto najbliżej myślę dostaniesz:

mvn dependency:get -Dartifact=g:a:v -o -DrepoUrl=file://path/to/your/repo 

I'v próbował, uda czy artefakt (np "junit: junit: 4.8.2") znajduje się w repozytorium i kończy się niepowodzeniem, jeśli tak nie jest, ale musisz podać pełną ścieżkę do lokalnego repo w postaci adresu URL.

Kluczem jest użycie opcji -o (offline), ponieważ w przeciwnym razie maven zawsze sprawdza centralne repozytorium.

+0

Działa tak jak w reklamie, choć dość żmudny. Pomyślałbym, że -o sprawi, że repoUrl stanie się zbędny (ale wypróbowany i nie działa). Dziękuję Ci. – kostja

+0

@kostja Wiem, z maven czasem najbardziej oczywiste wymagania są najtrudniejsze do wdrożenia :-( –

+2

+1. Jedna uwaga: od teraz * repoUrl * jest przestarzałe, użyj [** remoteRepositories **] (http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html#remoteRepositories). – informatik01

1

Nigdy nie słyszałem o czymś takim. Prawdopodobnie get cel wtyczki dependency jest jakoś bliski, ale wciąż nie jest dokładnie tym, czego szukasz. Obawiam się, że nie ma czegoś takiego. Jednak tworzenie własnej wtyczki Maven, która robi to, co chcesz, może być całkiem proste. Nowy mechanizm rozwiązywania artefaktów w Maven 3, zwany Aether, ma naprawdę dobre i proste API.

Zresztą, spójrzcie na wtyczce zależność:

http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

+0

wskazał mi właściwy kierunek, dziękuję. Naprawdę zastanawiałem się nad napisaniem wtyczki mvn na chwilę, musiałem jednak zmusić się do skupienia :) – kostja