Czy Maven wymaga w pewnym momencie połączenia z Internetem, aby móc z niego korzystać? Czy chodzi konkretnie o uzyskanie wewnętrznych wtyczek Maven do kompilowania, czyszczenia, pakowania itp.?
Czy masz maszynę z dostępem do internetu? Może serwer?
Marcelo
2
Tak, ale przenoszenie rzeczy stamtąd do środowiska programistycznego jest dobrze, żmudne.
Odpowiedzi:
163
Możesz uruchomić maven w trybie offline mvn -o install. Oczywiście wszelkie artefakty niedostępne w lokalnym repozytorium zawiodą. Maven nie jest oparty na repozytoriach rozproszonych, ale z pewnością ułatwiają pracę. Z tego powodu wiele sklepów korzysta z wewnętrznych serwerów lustrzanych, które są stopniowo synchronizowane z centralnymi repozytoriami.
Ponadto mvn dependency:go-offlinemożna użyć, aby upewnić się, że wszystkie zależności są zainstalowane lokalnie, zanim zaczniesz pracować w trybie offline.
W połączeniu z tą odpowiedzią odkryłem, że mvn zawiera swoje "podstawowe" wtyczki (tj. Kompilator). Więc dzięki instalacji mvn mogę uzyskać to, czego potrzebuję.
8
Weź również pod uwagę, że możesz użyć "zależności mvn: go-offline", aby upewnić się, że wszystkie zależności, o których mowa w twoim pom.xml, są obecne w twoim lokalnym repozytorium.
Thorbjørn Ravn Andersen
10
Niestety mvn dependency:go-offlinepo prostu nie łapie wszystkiego. Na przykład w nowej maszynie wirtualnej mój projekt nadal musi pobierać rzeczy, nawet po uruchomieniu tego celu. Zobacz także to wydanie .
phs
2
Z mojego doświadczenia wynika, że opcja -o nie działa poprawnie, a cel przejścia w tryb offline jest daleki od wystarczającego, aby umożliwić pełną kompilację offline: Zobacz rozwiązanie, które znalazłem tutaj: stackoverflow.com/q/43661755/1767316
user1767316
Jeśli dodasz flagę -llr dodatkowo do -o, to powinno działać.
Udo
10
Jeśli masz komputer z dostępem do Internetu w swojej sieci LAN, powinieneś zainstalować lokalne repozytorium Maven.
Polecam Artifactory Open Source . To jest to, czego używamy w naszej organizacji, jest naprawdę łatwe w konfiguracji.
Artifactory działa jako proxy między twoim narzędziem do budowania (Maven, Ant, Ivy, Gradle itp.) A światem zewnętrznym.
Buforuje zdalne artefakty, dzięki czemu nie musisz ich pobierać w kółko.
Blokuje niepożądane (a czasem wrażliwe na bezpieczeństwo) zewnętrzne żądania dotyczące wewnętrznych artefaktów i kontroluje, w jaki sposób i gdzie artefakty są wdrażane oraz przez kogo.
Po skonfigurowaniu Artifactory wystarczy zmienić Mavena settings.xmlw maszynach deweloperskich:
Skorzystaliśmy z tego rozwiązania, ponieważ mieliśmy problemy z dostępem do Internetu na naszych maszynach programistycznych i niektóre artefakty pobierały uszkodzone pliki lub w ogóle ich nie pobierały. Od tamtej pory nie mieliśmy problemów.
Maven potrzebuje zależności w lokalnym repozytorium. Najłatwiej je zdobyć, korzystając z dostępu do internetu (lub trudniej, korzystając z innych rozwiązań przedstawionych tutaj).
Zakładając więc, że możesz tymczasowo uzyskać dostęp do Internetu, możesz przygotować się do przejścia w tryb offline za pomocą wtyczki maven-dependency-plugin z jej zależnością: cel przejścia w tryb offline . Spowoduje to pobranie wszystkich zależności projektu do lokalnego repozytorium (oczywiście zmiany w zależnościach / wtyczkach będą wymagać nowego dostępu do Internetu / centralnego repozytorium).
Niestety dependency:go-offlinenie zadziałało, ponieważ nie zapisał wszystkiego w pamięci podręcznej, tj. Pliki POMs i inne niejawnie wspominają o zależnościach.
Obejście polega na określeniu lokalizacji lokalnego repozytorium , w settings.xmlpliku z parametrem <localRepository>...</localRepository>lub przez uruchomienie mvnz -Dmaven.repo.local=...parametrem. Po początkowej kompilacji projektu wszystkie niezbędne artefakty powinny zostać zapisane w pamięci podręcznej, a następnie można odwoływać się do lokalizacji repozytorium w ten sam sposób, podczas uruchamiania kompilacji Maven w trybie offline ( mvn -o ...).
Przed przejściem do trybu offline musisz upewnić się, że wszystko znajduje się w lokalnym repozytorium, co jest wymagane podczas pracy w trybie offline. Uruchomienie "zależności mvn: go-offline" dla projektu (ów) / pom (ów), nad którymi zamierzasz pracować, zmniejszy wysiłki zmierzające do osiągnięcia tego.
Ale zwykle nie jest to cała historia, ponieważ zależność: go-offline pobierze tylko wtyczki "gołej kompilacji" ( go-offline / solution-plugins nie rozwiązuje wszystkich zależności wtyczek ). Musisz więc znaleźć sposób na pobranie wtyczek do wdrażania / testowania / witryny (i być może innych) i ich zależności do repozytorium.
Ponadto zależność: go-offline nie pobiera samego artefaktu pom, więc musisz się uzależnić: skopiuj go, jeśli to konieczne.
Czasami - jak napisał MaDa - nie wiesz, czego będziesz potrzebować będąc offline, co praktycznie uniemożliwia posiadanie „wystarczającego” repozytorium.
W każdym razie, mając prawidłowo wypełnione repozytorium, wystarczy dodać „<offline> true </offline>” do settings.xml Mavena, aby przejść do trybu offline.
Nie zmieniaj profilu (identyfikatora) Mavena, którego użyłeś do wypełnienia repozytorium, będąc offline. Maven rozpoznaje pobrane artefakty w swoich metadanych za pomocą „tożsamości”, która jest powiązana z identyfikatorem profilu.
Jeśli używasz IntelliJ, możesz po prostu przejść do Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Maven i zaznaczyć / odznaczyć Pracuj offline .
Wydaje się, że bardziej dotyczy to zależności i wtyczek, takich jak wtyczki jetty, tomcat itp. Bardziej niepokoją mnie wewnętrzne wtyczki maven, takie jak maven-compiler-plugin
1
@predhme: To podejście będzie działać dla wszystkich wtyczek, ponieważ wszystkie one trafiają do repozytorium maven na twoim lokalnym komputerze
Gdy jeden programista zbuduje projekt, kompilacja przez kolejnych programistów lub Jenkins CI nie będzie wymagać dostępu do Internetu.
Serwer repozytorium Maven może również mieć skonfigurowane serwery proxy, aby uzyskać dostęp do Maven Central (lub bardziej potrzebnych repozytoriów publicznych), a także mogą mieć zinchowaną listę artefaktów w zdalnych repozytoriach.
Z mojego doświadczenia wynika, że opcja -o nie działa poprawnie, a cel przejścia w tryb offline jest daleki od wystarczającego, aby umożliwić pełną kompilację offline:
Rozwiązanie, które mógłbym zweryfikować, obejmuje użycie --legacy-local-repositoryopcji Maven zamiast -o(offline) oraz użycie lokalnego repozytorium zamiast repozytorium dystrybucji
Dodatkowo musiałem skopiować wszystkie maven-metadata-maven2_central.xmlpliki lokalnego repozytorium do maven-metadata.xmlpostaci oczekiwanej przez mavena.
Odpowiadając bezpośrednio na Twoje pytanie: nie wymaga połączenia internetowego, ale dostępu do repozytorium, w sieci LAN lub na dysku lokalnym (skorzystaj ze wskazówek innych osób, które tutaj pisały).
Jeśli twój projekt nie jest w fazie dojrzałej, oznacza to, że gdy POM są często zmieniane, tryb offline będzie bardzo niepraktyczny, ponieważ będziesz musiał dość często aktualizować repozytorium. Chyba że możesz zdobyć kopię repozytorium, które ma wszystko, czego potrzebujesz, ale skąd możesz to wiedzieć? Zazwyczaj repozytorium uruchamiasz od zera i jest ono klonowane stopniowo podczas tworzenia (na komputerze podłączonym do innego repozytorium). Kopia repozytorium publicznego repo1.maven.org waży setki gigabajtów, więc też nie polecałbym brutalnej siły.
Jest, ale nie jako projekt maven (mrówka). Mam więc wszystkie biblioteki, których potrzebuję, ale zastanawiałem się konkretnie nad bibliotekami wewnętrznymi maven. Takich jak maven-plugin-compiler.
Jeśli masz wszystkie zależności obsługiwane przez Ant, prawdopodobnie i tak brakuje Ci metadanych Mavena, więc Maven ich nie pobierze. Jeśli chodzi o „wewnętrzne biblioteki Mavena”, jedynym sposobem ich pobrania jest zbudowanie struktury pom i uruchomienie jej na komputerze podłączonym do Internetu. Przez „uruchom to” mam na myśli wykonanie każdego celu, którego myślisz, że będziesz używać, niekoniecznie tylko „czystą instalację mvn”.
MaDa
0
W przygotowaniu przed rozpoczęciem pracy w trybie offline wystarczy uruchomić
mvn dependency:go-offline
Dodaj go do pom, a następnie biegnij mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies. Po skonfigurowaniu wszystkich zależności dynamicznych maven nie będzie próbować niczego więcej pobierać (dopóki nie zaktualizujesz wersji).
Odpowiedzi:
Możesz uruchomić maven w trybie offline
mvn -o install
. Oczywiście wszelkie artefakty niedostępne w lokalnym repozytorium zawiodą. Maven nie jest oparty na repozytoriach rozproszonych, ale z pewnością ułatwiają pracę. Z tego powodu wiele sklepów korzysta z wewnętrznych serwerów lustrzanych, które są stopniowo synchronizowane z centralnymi repozytoriami.Ponadto
mvn dependency:go-offline
można użyć, aby upewnić się, że wszystkie zależności są zainstalowane lokalnie, zanim zaczniesz pracować w trybie offline.źródło
mvn dependency:go-offline
po prostu nie łapie wszystkiego. Na przykład w nowej maszynie wirtualnej mój projekt nadal musi pobierać rzeczy, nawet po uruchomieniu tego celu. Zobacz także to wydanie .Jeśli masz komputer z dostępem do Internetu w swojej sieci LAN, powinieneś zainstalować lokalne repozytorium Maven.
Polecam Artifactory Open Source . To jest to, czego używamy w naszej organizacji, jest naprawdę łatwe w konfiguracji.
Po skonfigurowaniu Artifactory wystarczy zmienić Mavena
settings.xml
w maszynach deweloperskich:Skorzystaliśmy z tego rozwiązania, ponieważ mieliśmy problemy z dostępem do Internetu na naszych maszynach programistycznych i niektóre artefakty pobierały uszkodzone pliki lub w ogóle ich nie pobierały. Od tamtej pory nie mieliśmy problemów.
źródło
Masz na to dwie możliwości:
1.) wprowadź zmiany w settings.xml dodaj to w pierwszym tagu
2.) użyj tagu -o dla polecenia offline.
źródło
Maven potrzebuje zależności w lokalnym repozytorium. Najłatwiej je zdobyć, korzystając z dostępu do internetu (lub trudniej, korzystając z innych rozwiązań przedstawionych tutaj).
Zakładając więc, że możesz tymczasowo uzyskać dostęp do Internetu, możesz przygotować się do przejścia w tryb offline za pomocą wtyczki maven-dependency-plugin z jej zależnością: cel przejścia w tryb offline . Spowoduje to pobranie wszystkich zależności projektu do lokalnego repozytorium (oczywiście zmiany w zależnościach / wtyczkach będą wymagać nowego dostępu do Internetu / centralnego repozytorium).
źródło
Obejście polega na określeniu lokalizacji lokalnego repozytorium , w
settings.xml
pliku z parametrem<localRepository>...</localRepository>
lub przez uruchomieniemvn
z-Dmaven.repo.local=...
parametrem. Po początkowej kompilacji projektu wszystkie niezbędne artefakty powinny zostać zapisane w pamięci podręcznej, a następnie można odwoływać się do lokalizacji repozytorium w ten sam sposób, podczas uruchamiania kompilacji Maven w trybie offline (mvn -o ...
).źródło
Przed przejściem do trybu offline musisz upewnić się, że wszystko znajduje się w lokalnym repozytorium, co jest wymagane podczas pracy w trybie offline. Uruchomienie "zależności mvn: go-offline" dla projektu (ów) / pom (ów), nad którymi zamierzasz pracować, zmniejszy wysiłki zmierzające do osiągnięcia tego.
Ale zwykle nie jest to cała historia, ponieważ zależność: go-offline pobierze tylko wtyczki "gołej kompilacji" ( go-offline / solution-plugins nie rozwiązuje wszystkich zależności wtyczek ). Musisz więc znaleźć sposób na pobranie wtyczek do wdrażania / testowania / witryny (i być może innych) i ich zależności do repozytorium.
Ponadto zależność: go-offline nie pobiera samego artefaktu pom, więc musisz się uzależnić: skopiuj go, jeśli to konieczne.
Czasami - jak napisał MaDa - nie wiesz, czego będziesz potrzebować będąc offline, co praktycznie uniemożliwia posiadanie „wystarczającego” repozytorium.
W każdym razie, mając prawidłowo wypełnione repozytorium, wystarczy dodać „<offline> true </offline>” do settings.xml Mavena, aby przejść do trybu offline.
Nie zmieniaj profilu (identyfikatora) Mavena, którego użyłeś do wypełnienia repozytorium, będąc offline. Maven rozpoznaje pobrane artefakty w swoich metadanych za pomocą „tożsamości”, która jest powiązana z identyfikatorem profilu.
źródło
Jeśli używasz IntelliJ, możesz po prostu przejść do Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Maven i zaznaczyć / odznaczyć Pracuj offline .
źródło
Czy to działa dla Ciebie?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Nie zapomnij dodać go do repozytorium wtyczek i wskaż adres URL, gdziekolwiek jest twoje repozytorium.
Jeśli nie, być może będziesz musiał uruchomić lokalny serwer, np. Apache, na swoich maszynach.
źródło
(źródło: jfrog.com )
lub
Po prostu użyj serwerów repozytorium Maven, takich jak Sonatype Nexus http://www.sonatype.org/nexus/ lub JFrog Artifactory https://www.jfrog.com/artifactory/ .
Gdy jeden programista zbuduje projekt, kompilacja przez kolejnych programistów lub Jenkins CI nie będzie wymagać dostępu do Internetu.
Serwer repozytorium Maven może również mieć skonfigurowane serwery proxy, aby uzyskać dostęp do Maven Central (lub bardziej potrzebnych repozytoriów publicznych), a także mogą mieć zinchowaną listę artefaktów w zdalnych repozytoriach.
źródło
Z mojego doświadczenia wynika, że opcja -o nie działa poprawnie, a cel przejścia w tryb offline jest daleki od wystarczającego, aby umożliwić pełną kompilację offline:
Rozwiązanie, które mógłbym zweryfikować, obejmuje użycie
--legacy-local-repository
opcji Maven zamiast-o
(offline) oraz użycie lokalnego repozytorium zamiast repozytorium dystrybucjiDodatkowo musiałem skopiować wszystkie
maven-metadata-maven2_central.xml
pliki lokalnego repozytorium domaven-metadata.xml
postaci oczekiwanej przez mavena.Zobacz rozwiązanie, które znalazłem tutaj .
źródło
Odpowiadając bezpośrednio na Twoje pytanie: nie wymaga połączenia internetowego, ale dostępu do repozytorium, w sieci LAN lub na dysku lokalnym (skorzystaj ze wskazówek innych osób, które tutaj pisały).
Jeśli twój projekt nie jest w fazie dojrzałej, oznacza to, że gdy POM są często zmieniane, tryb offline będzie bardzo niepraktyczny, ponieważ będziesz musiał dość często aktualizować repozytorium. Chyba że możesz zdobyć kopię repozytorium, które ma wszystko, czego potrzebujesz, ale skąd możesz to wiedzieć? Zazwyczaj repozytorium uruchamiasz od zera i jest ono klonowane stopniowo podczas tworzenia (na komputerze podłączonym do innego repozytorium). Kopia repozytorium publicznego repo1.maven.org waży setki gigabajtów, więc też nie polecałbym brutalnej siły.
źródło
W przygotowaniu przed rozpoczęciem pracy w trybie offline wystarczy uruchomić
mvn dependency:go-offline
źródło
Pojawiła się nowa wtyczka, która naprawia niedociągnięcia
mvn dependency:go-offline
:https://github.com/qaware/go-offline-maven-plugin
Dodaj go do pom, a następnie biegnij
mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Po skonfigurowaniu wszystkich zależności dynamicznych maven nie będzie próbować niczego więcej pobierać (dopóki nie zaktualizujesz wersji).źródło
do
Zmień tag offline z false na true.
pobierze z repozytorium online
źródło