31 votes

Maven peut-il rassembler tous les JARs dépendants d'un projet pour faciliter le déploiement de l'application ?

Je commence juste à utiliser Maven (en l'évaluant, vraiment) et je dois pouvoir générer rapidement une JAR pour mon application et un répertoire contenant toutes les dépendances (par exemple, lib) afin que je puisse déployer ces deux éléments pour qu'ils soient exécutés de manière autonome. La génération du fichier JAR avec le manifeste approprié est facile, mais je ne sais pas comment faire pour que Maven copie les dépendances du projet en cours dans un répertoire de type lib que je peux déployer.

Puisqu'il s'agit d'une application Java autonome, je suis no Si vous êtes intéressé par le déploiement dans un dépôt Maven, c'est également assez trivial, ou du moins facile à trouver sur Google.

J'ai trouvé comment faire tout excepto copier les fichiers JAR dépendants dans un répertoire spécifié. C'est le flux de travail que je recherche :

$ mvn clean
$ mvn package
$ cp -r target/{lib,myApp.jar} installLocation

Puis, en courant myApp.jar de installLocation en tant que fichier JAR devrait "fonctionner" sans tenir compte de mon $CLASSPATH .

Pour essayer d'anticiper certaines réponses :

  • J'ai une classe principale définie, et cela fonctionne bien.
  • J'ai également défini le classpath dans le fichier MANIFEST.MF, et cela fonctionne également.
  • J'ai découvert comment utiliser <classpathPrefix> y <classpathMavenRepositoryLayout> pour que cela fonctionne -- mais seulement sur ma machine. (via : <classpathPrefix>${settings.localRepository}</classpathPrefix> )

0voto

ozma Points 76

Utilisation de maven.repo.local on peut rassembler tous les jars, mais, ils sont rassemblés dans un répertoire avec la hiérarchie maven (.m2).

mvn install -Dmaven.repo.local=./pick/some/folder

Vous pouvez ensuite les collecter (sous Linux) :

mkdir flat-repo
find ./pick/some/folder -type f -name "*.jar" | xargs -I'{}' cp '{}' flat-repo/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X