w moim projekcie J2EE mam kilka zależności, które nie są dostępne w żadnym repozytorium Mavena, ponieważ są to biblioteki zastrzeżone. Te biblioteki muszą być dostępne w czasie wykonywania, więc muszą zostać skopiowane do docelowego /.../ WEB-INF / lib ...
W tej chwili wymieniam je jako zależności systemowe w moim POM, ale w przypadku tej metody problem polega na tym, że nie są one kopiowane do docelowej kompilacji podczas kompilacji. Również ta metoda nie jest zbyt elegancka.
Jaki jest więc najlepszy sposób na ich integrację w Maven?
Uwaga: nie chcę tworzyć własnego repozytorium Maven.
java
maven-2
build-process
samson
źródło
źródło
Odpowiedzi:
Jak powiedziałeś, że nie chcesz tworzyć własnego repozytorium, być może to pomoże.
Możesz użyć celu pliku instalacyjnego wtyczki maven-install-plugin, aby zainstalować plik w lokalnym repozytorium. Jeśli utworzysz skrypt z wywołaniem Mavena dla każdego pliku i zachowasz go obok plików jars, ty (i każdy, kto ma dostęp) możesz łatwo zainstalować pliki jar (i powiązane pliki pom) w ich lokalnym repozytorium.
Na przykład:
Lub tylko
Następnie możesz normalnie odwoływać się do zależności w projekcie.
Jednak najlepszym rozwiązaniem jest skonfigurowanie wewnętrznego zdalnego repozytorium i polecam korzystanie z Nexusa samodzielnie. W razie potrzeby może działać na komputerze deweloperskim, a narzut jest minimalny.
źródło
Dla osób pragnących szybkiego rozwiązania tego problemu:
po prostu nadaj swojej bibliotece unikalny identyfikator grupy i nazwę artefaktu oraz wskaż, gdzie się ona znajduje w systemie plików. Możesz ruszać.
Oczywiście jest to brudna szybka poprawka, która będzie działać TYLKO na twoim komputerze i jeśli nie zmienisz ścieżki do bibliotek. Ale czasami to wszystko, czego chcesz, uruchomić i zrobić kilka testów.
EDYCJA: po prostu ponownie zredaguj pytanie i zdałem sobie sprawę, że użytkownik już używał mojego rozwiązania jako tymczasowej poprawki. Swoją odpowiedź zostawię jako szybką pomoc dla innych, którzy przyjdą na to pytanie. Jeśli ktoś się z tym nie zgadza, zostaw mi komentarz. :)
źródło
Utwórz folder repozytorium w swoim projekcie. Weźmy
Następnie zainstaluj niestandardowy jar w tym repozytorium:
Na koniec dodaj następujące definicje repozytorium i zależności do projektów pom.xml:
źródło
/
(tzn. Wskazuje folder), wówczas repozytorium jest tworzone z groupId. Np .: jeśli identyfikator grupy to,foo.com
a localRepositoryPath torepo
, wówczas folder repozytorium stanie sięrepo.foo.com
.Musisz skonfigurować lokalne repozytorium, które będzie hostować takie biblioteki. Jest wiele projektów, które dokładnie to robią. Na przykład Artifactory .
źródło
Żadne z rozwiązań nie działa, jeśli używasz kompilacji Jenkins !! Gdy pom jest uruchamiany na serwerze kompilacji Jenkinsa, rozwiązania te nie powiodą się, ponieważ program pom uruchomiony przez Jenkins będzie próbował pobrać te pliki z repozytorium przedsiębiorstwa.
Skopiuj pliki Jars do src / main / resources / lib (utwórz folder lib). Będą one częścią twojego projektu i przejdą do serwera wdrożeniowego. Na serwerze wdrażania upewnij się, że skrypty startowe zawierają src / main / resources / lib / * w classpath. Altówka.
źródło
możesz je zainstalować w prywatnym, lokalnym repozytorium (np. .m2 / repozytorium w swoim katalogu domowym): więcej szczegółów tutaj
źródło
Jeśli dobrze rozumiem, jeśli chcesz wyeksportować zależności podczas fazy kompilacji, aby nie było potrzeby ręcznego pobierania każdej potrzebnej biblioteki, możesz użyć mojo copy-dependencies .
Mam nadzieję, że będzie to przydatne w Twoim przypadku ( przykłady )
źródło
Rozwiązanie @Ric Jafe zadziałało dla mnie.
To jest dokładnie to, czego szukałem. Sposób na przepchnięcie go do badania kodu testowego. Nic fajnego. Tak, wiem, że tak wszyscy mówią :) Różne rozwiązania wtyczek Mavena wydają się być przesadą dla moich celów. Mam kilka słoików, które zostały mi przekazane jako biblioteki innych firm z plikiem pom. Chcę, aby szybko się skompilował / działał. To rozwiązanie, które w trywialny sposób dostosowałem do Pythona zdziałało dla mnie cuda. Wytnij i wklej do mojego pom. Kod Python / Perl dla tego zadania znajduje się w tym pytaniu i odpowiedziach: Czy mogę dodać jars do ścieżki klas kompilacji maven 2 bez ich instalowania?
źródło
Nadal używaj ich jako zależności systemowej i skopiuj je do celu /.../ WEB-INF / lib ... przy użyciu wtyczki zależności Maven:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
źródło
Sama instalacja nie działała dla mnie.
źródło