Question

Je crée un projet en ligne de commande java, sans interface graphique. Le projet utilise n'importe quel nombre de projets open source: Spring, Logback, Commons CLI, etc. Quand j'ai commencé à penser à l'empaquetage, j'ai imaginé qu'il sortirait sous forme de fichier zip, qui pourrait être explosé dans le fichier jar, avec un sous-répertoire lib et des fichiers jar dépendants dans la lib.

adapter.jar
 /lib/dependencyA.jar
 /lib/dependencyB.jar 
 etc.  

J'ai joué avec Maven Assembly, mais il ne sort toujours pas comme ci-dessus, et je n'ai trouvé aucun exemple qui génère la structure ci-dessus. Est-il possible de le faire? De plus, avoir une structure multi-module ajoute une autre couche de complexité que je n'ai pas été en mesure de résoudre, car le module d'assemblage ne peut pas trouver le module principal en tant que dépendance. C'est mon premier projet Maven, donc j'apprends toujours comment fonctionne Maven. J'ai parcouru le livre Sonatype, mais j'ai raté quelque chose, car même l'utilisation de la section Meilleures pratiques n'a pas pu résoudre la dépendance manquante. Les exemples que j'ai vus impliquent généralement la fusion dans un fichier jar exécutable uber, dont certains utilisent le projet Shade, d'autres non. Ma question est la suivante: est-ce que faire un uber jar comprenant des bibliothèques tierces comme Spring, etc. est une bonne idée? Ou devrais-je persévérer avec mon plan de sous-répertoire zip / lib d'origine?

Était-ce utile?

La solution

Faites dépendre votre module d'assemblage des modules que vous souhaitez empaqueter, puis utilisez les balises des pour les inclure dans la mise en page de votre choix.Si vous avez d'autres fichiers qui ne proviennent pas d'une dépendance, vous pouvez les placer dans le module de déploiement lui-même.

Veuillez lire attentivement la documentation des descripteurs d'assemblage.Vous pouvez compresser, décompresser, inclure / exclure et définir des autorisations pour les fichiers de votre assemblage.

Si vous n'avez pas vu le livre sonatype sur maven, voici le chapitre correspondant: http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

EDIT: a échappé aux <

Autres conseils

Il vous suffit d'être plus précis dans votre descripteur d'assemblage.Utilisez un ensemble de dépendances qui inclut uniquement le fichier jar principal et le livre en haut, et un autre qui exclut uniquement le fichier jar principal et le livre au répertoire lib.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top