Najlepsze podejście zależy od tego, co chcesz zrobić:
Jeśli chcesz połączyć swoje zależności w plik WAR lub EAR, po prostu ustaw typ opakowania swojego projektu na EAR lub WAR. Maven umieści zależności w odpowiedniej lokalizacji.
Jeśli chcesz utworzyć plik JAR zawierający kod wraz ze wszystkimi zależnościami, użyj wtyczki asemblera z deskryptorem jar-with-dependencies . Maven wygeneruje pełny plik JAR ze wszystkimi twoimi klasami oraz klasami z dowolnych zależności.
Jeśli chcesz po prostu interaktywnie wciągnąć swoje zależności do katalogu docelowego, użyj wtyczki zależności do skopiowania plików.
Jeśli chcesz pobrać zależności dla innego rodzaju przetwarzania, prawdopodobnie będziesz musiał wygenerować własną wtyczkę. Istnieją interfejsy API umożliwiające uzyskanie listy zależności i ich lokalizacji na dysku. Będziesz musiał wziąć to stąd ...
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ć).
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).
dzięki! jest to najprostszy sposób, aby po prostu skopiować biblioteki, które byłyby wymagane przez projekt do jakiegoś folderu, aby w razie potrzeby skopiować je gdzie indziej, np. projekt nie oparty na maven. Pamiętaj, że oczywiście możesz po prostu przekazać w folderze zakodowanym do użycia, jeśli chcesz, np.mvn dependency:copy-dependencies -DoutputDirectory=./lib
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.
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>appassembler-maven-plugin</artifactId><version>1.0</version><executions><execution><id>generate-jsw-scripts</id><phase>package</phase><goals><goal>generate-daemons</goal></goals><configuration><!--declare the JSW config --><daemons><daemon><id>myApp</id><mainClass>name.seller.rich.MyMainClass</mainClass><commandLineArguments><commandLineArgument>start</commandLineArgument></commandLineArguments><platforms><platform>jsw</platform></platforms></daemon></daemons><target>${project.build.directory}/appassembler</target></configuration></execution><execution><id>assemble-standalone</id><phase>integration-test</phase><goals><goal>assemble</goal></goals><configuration><programs><program><mainClass>name.seller.rich.MyMainClass</mainClass><!-- the name of the bat/sh files to be generated --><name>mymain</name></program></programs><platforms><platform>windows</platform><platform>unix</platform></platforms><repositoryLayout>flat</repositoryLayout><repositoryName>lib</repositoryName></configuration></execution></executions></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><version>2.2-beta-4</version><executions><execution><phase>integration-test</phase><goals><goal>single</goal></goals><configuration><descriptors><descriptor>src/main/assembly/archive.xml</descriptor></descriptors></configuration></execution></executions></plugin>
Deskryptorem zestawu (w src / main / assembly) do spakowania direcotry jako zip byłby:
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:
Twój przykład kodu nie rozwiązuje problemu, po prostu łączy wszystko w jeden plik JAR. Tak, wtyczka asemblera może zostać wykorzystana do osiągnięcia tego celu, ale nie w ten sposób.
minęło tak dużo czasu, że tak naprawdę nie pamiętam… a ponadto zacząłem zardzewieć od czasu, gdy skupiłem się na administracji Linuksem w mojej ostatniej firmie - ale dziękuję za opinie!
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:
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.