Jak mogę skopiować zależności środowiska wykonawczego mojego projektu do target/lib
folderu?
Tak jak jest teraz, po mvn clean install
tym, jak target
folder zawiera tylko słoik mojego projektu, ale nie ma żadnych zależności w czasie wykonywania.
Odpowiedzi:
To działa dla mnie:
źródło
excludeScope
opcję ( maven.apache.org/plugins/maven-dependency-plugin/… ).<excludeScope>test</excludeScope>
wchodzi doconfiguration
węzła.Najlepsze podejście zależy od tego, co chcesz zrobić:
źródło
Działa dla mnie z katalogiem zależności utworzonym w folderze docelowym. Lubię to!
źródło
Spójrz na wtyczkę zależności Maven , a konkretnie na cel dependence: copy-dependencies . Spójrz na przykład pod nagłówkiem Zależność: kopiowanie zależności mojo . Ustaw właściwość konfiguracyjną outputDirectory na $ {basedir} / target / lib (uważam, że będziesz musiał przetestować).
Mam nadzieję że to pomoże.
źródło
Proste i eleganckie rozwiązanie w przypadku, gdy trzeba skopiować zależności do katalogu docelowego bez użycia innych faz maven (uważam to za bardzo przydatne podczas pracy z Vaadin).
Kompletny przykład pom:
Następnie uruchomić
mvn process-sources
Zależności pliku jar można znaleźć w
/target/dependency
źródło
Jeśli chcesz to robić od czasu do czasu (a tym samym nie chcesz zmieniać POM), wypróbuj ten wiersz polecenia:
Pominięcie ostatniego argumentu powoduje umieszczenie zależności
target/dependencies
.źródło
mvn dependency:copy-dependencies -DoutputDirectory=./lib
Wypróbuj coś takiego:
źródło
maven clean install
, to znajdzieszlib
wtarget
install
fazęprocess-resources
tak że zależności są kopiowane przedbuild
przebiegów celWszystko czego potrzebujesz to następujący fragment kodu w pliku pom.xml
build/plugins
:Powyższe będzie działać w
package
fazie po uruchomieniuZależności zostaną skopiowane do katalogu outputDirectory określonego we fragmencie, tj.
lib
W tym przypadku.Jeśli chcesz to robić tylko od czasu do czasu, nie są wymagane żadne zmiany w pliku pom.xml. Po prostu uruchom następujące polecenie:
Aby zastąpić domyślną lokalizację, czyli
${project.build.directory}/dependencies
dodaj właściwość System o nazwieoutputDirectory
, tjźródło
jeżeli
oto, co dla mnie zadziałało:
źródło
Jeśli chcesz dostarczyć pakiet słoika aplikacji wraz ze wszystkimi jego zależnościami i niektórymi skryptami wywołującymi MainClass, spójrz na wtyczkę appassembler-maven-plugin .
Poniższa konfiguracja wygeneruje skrypty dla systemu Windows i Linux w celu uruchomienia aplikacji (z wygenerowaną ścieżką odwołującą się do wszystkich słoików zależności, pobierz wszystkie zależności (do folderu lib poniżej elementu docelowego / appassembler). Następnie można użyć wtyczki asemblera do spakowania całego katalog appassembler do pliku zip, który jest instalowany / wdrażany wraz ze słoikiem do repozytorium.
Deskryptorem zestawu (w src / main / assembly) do spakowania direcotry jako zip byłby:
źródło
Jeśli sprawisz, że projekt będzie typem wojny lub ucha, skopiuje zależności.
źródło
Możesz użyć wtyczki Shade, aby utworzyć słoik Uber, w którym możesz spakować wszystkie swoje zależności zewnętrzne.
źródło
Wystarczy przeliterować to, co już zostało powiedziane w skrócie. Chciałem utworzyć wykonywalny plik JAR, który zawierał moje zależności wraz z moim kodem. To działało dla mnie:
(1) W pom, pod <build> <wtyczki>, zawarłem:
(2) Uruchamianie zestawu kompilacji mvn: zestaw utworzył pożądany plik my-project-0.1-SNAPSHOT-jar-with-dependencies.jar w katalogu docelowym projektu.
(3) Uruchomiłem JAR z java -jar my-project-0.1-SNAPSHOT-jar-with-dependencies.jar
źródło
Jest to ciężkie rozwiązanie do osadzania dużych zależności, ale Maven's Assembly Plugin załatwia sprawę.
@ Odpowiedź bogatego sprzedawcy powinna zadziałać, chociaż w prostszych przypadkach potrzebujesz tylko tego fragmentu przewodnika użytkowania :
źródło
Jeśli masz problemy związane z zależnościami, które nie pojawiają się w pliku WEB-INF / lib podczas działania na serwerze Tomcat w Eclipse, spójrz na to:
ClassNotFoundException DispatcherServlet podczas uruchamiania Tomcat (zależności Maven nie zostały skopiowane do wtpwebapps)
Musisz po prostu dodać Zależności Maven we Właściwościach projektu> Zespół wdrożeniowy.
źródło