Nehmen wir an, ich habe eine sehr gewöhnliche Web-App über mywebapp.war
bereitgestellt, die von Maven
:
Nun möchte ich myjarfile1.jar
und myjarfile2.jar
(oder mehr) in webapps/mywebapp/jardeploy
bereitstellen. Sie sind Artefakte eines anderen Maven-Projekts, nicht des Kriegs. Sie sind auch keine Jars, die mywebapp verwendet, die unter WEB-INF/lib
wären, sondern herunterladbare Jars, die separat erstellt werden und nicht Teil des mywebapp-Quellcodes sind.
Gibt es eine Möglichkeit, ein Archiv zu bündeln, das die zwei oder mehr Gefäße in Maven bündelt, die, wenn sie in webapps
abgelegt werden, nicht im Standard webapps/jardeploy
, sondern in webapps/mywebapp/jardeploy
bereitgestellt werden? Es wäre das gleiche, als ob ich die Gläser genommen und sie in dieses Verzeichnis kopiert hätte, aber ich würde dem Standard-App-Server-Deployment-Protokoll folgen, indem ich ein generiertes Artefakt in Webapps fallen lasse und nicht den früheren Hacky-Ansatz. Ich möchte eigentlich ein formales Artefakt (genau wie der Krieg) anstelle eines Post-Deploy-Add-Ons. Gibt es eine Möglichkeit zu sagen (vielleicht im Manifest), dass es das Jar entpacken und in dieses Verzeichnis stellen muss, wenn dieses Verzeichnis existiert?
Der Container sollte keine Rolle spielen, aber es ist Tomcat 7.
Das sieht wie ein Standard-Anwendungsfall für maven-war-plugin und zusätzliche Ressourcen aus, es sei denn, ich verpasse etwas. Zum Beispiel hier (Siehe Abschnitt Konfigurieren von Webressourcen) sagt Ihnen, dass Sie zusätzliche Ressourcen in Ihren War Build aufnehmen können (und das ist, was Ihre zwei Gläser für mich sind: zusätzliche Ressourcen)
Wenn dies für Sie nicht funktioniert, können Sie mit maven-assembly-plugin ein viel flexibleres Format angeben.
Sie können eine Webanwendung mit einem WebListener erstellen, der die JAR-Dateien in das Verzeichnis mywebapp / jardeploy kopiert. Wenn diese Anwendung in Ihrem Container bereitgestellt wird, kopiert sie die Jars an die gewünschte Stelle.
Ich habe getestet und es funktioniert! Angenommen, Sie haben diese neue Webanwendung erstellt und die jars in das Verzeichnis src / main / webapps / jars gestellt. Der WebListener sieht folgendermaßen aus:
%Vor%Dieser Code ist nur ein Beweis des Konzepts und kann verbessert werden, aber es dient seinem Zweck. Es kopiert nur ein Jar (myjarfile1.jar) nach / webapps / mywebapp / jardeploy . PS: Ich habe diese neue Webapp mit maven archetypes erstellt.