10
votes

Comment fusionner les guerres en un?

Dans notre société, nous avons un numéro de modules différents construits comme des guerres distinctes. Chaque client peut choisir et choisir le module qu'il souhaite acheter. Étant donné que tous les modules partagent la même session, le contexte de sécurité, etc., il est logique de les fusionner en une seule guerre.

est-il possible d'automatiser ce processus? Par exemple, il devrait fusionner web.xml, calculer chaque dépendance des guerres, copier des fichiers tels que .jsp et .class, etc. Au fait, nous utilisons Maven, mais n'étaient pas en mesure de trouver une solution à ce problème.


0 commentaires

6 Réponses :


1
votes

Il est clair que cela est clair de le faire, mais je pense que vous feriez mieux de travailler sur une seule guerre en premier lieu. Terminé "Pick-and-Mix" de la guerre Sommaire des Sunbds comme un cauchemar de soutien à moi.


1 commentaires

Si le client n'achète pas le module, je ne veux pas distribuer le module au client (et recourir à la cacher ..). En outre, une telle guerre serait énorme - ce serait extrêmement pratique au développement, etc.



0
votes

En règle générale - non, ce n'est pas possible. Et si vous avez des noms de JSP en double? Noms de servlet / mappages? Les mêmes auditeurs de contexte se chargent avec différents paramètres (communs si vous utilisez le ressort / des jambes de force / etc ...)? Tu obtiens le point.

Dans votre cas particulier, il peut être ou non possible en fonction de vos circonstances spécifiques. Extraire la guerre et la copie JSP / classes / bibliothèques sur est facile; La fusion web.xml est un peu plus complexe que vous devez conserver l'ordre des éléments - il peut être plus facile de définir manuellement une "fusionnée" web.xml.


2 commentaires

Je serais assez heureux d'avoir l'outil qui aborde si l'un de ces conflits est découvert.


Je pense qu'une politique pourrait gérer ces affrontements directs de noms (superpositions à utiliser une politique «Premières victoires», bien qu'une «guerre, y compris la sous-guerre gagne» aurait plus de sens pour moi. Je veux faire cela et fusionner Web-XMLS et avoir des servlets et des filtres de la sous-guerre mappés et disponibles en résultat. S'il y a un choc de nom de servlet ou une trajectoire de cartographie de servlet puisse résoudre le conflit comme mentionné ci-dessus. Très utile lorsque vous avez une plate-forme de base que vous souhaitez Combinez dans différents projets / produits d'extrémité.



-1
votes

Vous pourriez être capable d'obtenir quelque chose de travailler avec un bocal.

http://one-jar.sourceforge.net/

Cela ne fait probablement pas tout ce que vous voulez.


0 commentaires

4
votes

Je me souviens que le Cargo-Maven2- Plugin a un uberwar mojo. Je ne l'ai pas utilisé mais je comprends qu'il est destiné à fusionner des guerres, bien que vous ayez besoin de faire attention à éviter les conflits.

Une numérisation rapide de la source indique que vous définissez un descripteur fusion pour déterminer comment fusionner les guerres. Malheureusement, le Site de la documentation a disparu alors je ne peux pas vous donner plus de détails.

Vous pouvez consulter le CODEHAUS JIRA Site pour Une compréhension de son statut actuel.

Pour utiliser le plugin, vous devez spécifier la configuration quelque chose comme ceci: xxx

(toujours à la recherche d'une fusion. Exemple XML)


2 commentaires

@Pascal j'ai tendance à être d'accord, mais s'il n'y a pas d'option au refacteur, cela fournit une solution de contournement


@Rich sûr, c'est vrai et je vous ai donné mon +1. J'ai supprimé mon commentaire précédent car il peut être mal interprété.



8
votes

a accordé les risques mentionnés par Djna et CHSSPLY76, vous pourrez peut-être y parvenir en utilisant des superpositions avec le plug-in Maven War . Cela vous obligera à séparer les mappages de servlet pour vous assurer que vous n'avez aucune collision d'URL et similaire, mais cela pourrait faire le tour.

Fondamentalement, vous créez un module avec plusieurs dépendances de guerre et utilisez le plugin pour les fusionner dans une nouvelle.


1 commentaires

Cela fonctionne pour presque tous les fichiers (non-bloquants) provenant des différentes guerres de WebApp. Savez-vous un moyen de fusionner les différents fichiers web.xml?



1
votes

Les oreilles sont conçues pour contenir plusieurs choses. Serait-ce une possibilité pour vous?


EDIT: Tout d'abord, supposons qu'il n'y a pas de ressources en double (que l'on devrait aller dans le pot final?) Et que tous les pots sont compatibles (vous n'avez qu'une version de chaque bibliothèque, etc.).

Vous devriez pouvoir simplement copier le contenu de Web-Inf / on les uns sur les autres, à l'exception des différents fichiers XML qui doivent être soigneusement fusionnés. Le moyen le plus simple de le faire est probablement en utilisant une feuille de style XSLT qui vous permet de contenir deux documents XML et de les fusionner (si je vous rappelle correctement, ceci est la balise). Vous aurez besoin d'un pour chaque fichier XML afin d'être certain que vous le faites correctement - pensez simplement à la navigation JSF.

Ainsi, ma suggération est une copie simple des ressources et un fichier de configuration XML de style XSLT fabriqué à la main.


2 commentaires

C'est une option (qui limiterait le nombre de serveurs Web), mais dans ce cas, j'ai toujours besoin de partager la session et le contexte de la sécurité entre les guerres. Certains serveurs d'applications permettent le partage de la session HTTP entre les guerres, mais cela ne semble pas être la fonctionnalité standard.


Je comprends que l'oreille serait en mesure de contenir plusieurs webapps non liés, mais ne fusionnerait pas deux applications Web en une? Mais je pense que j'ai besoin d'étudier davantage sur la manière dont les oreilles sont utilisées. Recommander tout projet de référence ou d'oreille à regarder?