2010-04-20 9 views
1

J'ai un projet Maven qui se compose de quelques modules. Cela doit être déployé sur une machine client et impliquera l'installation de Tomcat et utilisera NSIS pour le programme d'installation. Il y a une application séparée qui surveille tomcat et peut redémarrer, effectuer des mises à jour, etc.assemblages maven. Mettre chaque dépendance avec des dépendances transitives dans son propre répertoire?

Alors, j'ai la configuration des modules comme suit:

 
project 
    +-- client (all code, handlers, for the war) 
    +-- client-common - (shared code, shared between monitor and client) 
    +-- client-web - (the war, basically just uses war has applicationcontext, web.xml,etc) 
    +-- monitor - (the monitor application jar. Uses wrapper to run) 

Alors, je dois créer un programme d'installation. Je prévoyais de créer un autre module qui serait l'installateur. C'est là que j'aurais le répertoire tomcat et je voudrais que maven "assemble" tout et ensuite exécute NSIS pour que je puisse créer l'installateur final.

Cependant, j'ai besoin d'avoir le fichier jar du moniteur dans un répertoire et ensuite avoir toutes les dépendances de moniteurs dans un répertoire lib /. La structure du répertoire final devrait être:

 
project-installer-directory/monitor/monitor-version.jar 
project-installer-directory/monitor/lib/monitor-dep-1.jar 
project-installer-directory/monitor/lib/monitor-dep-2.jar 
project-installer-directory/monitor/lib/monitor-dep-3.jar 
project-installer-directory/webapps/client-web.war 

Où dans le répertoire client Web \ WEB-INF \ lib, nous aurons les dépendances de tous les clients Web après son explosion. Cela fonctionne, j'ai le fichier .war. Ce qui me pose problème, c'est de rendre les dépendances du module moniteur indépendantes des dépendances du module client-web.

J'ai essayé de créer simplement le module d'installation et de rendre le moniteur et les dépendances client-web, mais quand j'utilise les dépendances-copie ça me donne tout. Pas ce que je veux.

Je suis penché vers la création d'un nouveau module appelé moniteur-assembly ou quelque chose pour me donner un fichier zip qui contient le format de répertoire dont j'ai besoin, mais c'est encore un autre module.

Quelqu'un peut-il m'aider s'il vous plaît avec la bonne façon d'accomplir cela?

merci!

Répondre

0

Le plus élégant serait d'écrire un propre plugin Maven ou d'étendre maven-dependency-plugin. En fait, ce dont vous avez besoin est assez proche de dependency:copy-dependencies, mais vous avez besoin d'une possibilité de spécifier quel artefact vous voulez commencer. Comme je le vois dans le code, ce n'est pas possible pour le moment. Idée supplémentaire: Vous pouvez créer un assemblage zip par module (y compris les dépendances de module dont vous avez besoin) et utiliser les dépendances: décompressez pour déballer ces zips dans votre module d'installation.

Questions connexes