2010-03-04 2 views
6

Je trouve un moyen de copier des fichiers sur mon serveur web en utilisant maven. J'ai un projet maven qui contient un ensemble de fichiers html, js, properties et de configuration. Je voudrais emballer mes affaires et déployer au dépôt. Après cela, dans un autre projet Maven, je voudrais décompresser les fichiers de l'artefact, filtrer les ressources et les copier dans les dossiers spécifiés sur le serveur.Comment décompresser les artefacts et filtrer les ressources?

Quelle est la meilleure façon de le faire? Maven-dependency-plugin peut décompresser l'artefact mais je n'ai pas trouvé comment utiliser le filtrage des ressources dans ce cas et comment spécifier plusieurs répertoires de sortie.

Répondre

1

Je voudrais créer autant de distributions au besoin en utilisant la maven assembly plugin et utiliser filteringau moment de l'assemblage. Vous pouvez ensuite déployer ces assemblys dans un référentiel et, en effet, utiliser le plugin de dépendance maven pour extraire et décompresser un assemblage d'une machine donnée. Plus d'informations sur les assemblages dans le livre Chapter 8. Maven Assemblies de Sonatype.

Mise à jour: Une alternative si vous ne souhaitez pas déployer des ensembles « filtrés » serait de créer l'ensemble de la machine ciblée (en utilisant toujours les profils et le filtrage comme suggéré). La distribution créée contiendra le bon contenu dans les bons dossiers (vous pouvez le faire avec des assemblys) et vous devrez juste décompresser l'archive pour la dernière étape.

+0

Je suppose que ce n'est pas une bonne idée de stocker dans le référentiel des artefacts filtrés. Le filtrage est une chose spécifique à l'environnement. – eugenn

+0

@eugenn Quel est le problème avec le stockage des artefacts "filtrés" ou des artefacts spécifiques à l'environnement? Cela arrive souvent, surtout avec des distributions qui peuvent être spécifiques à la plate-forme (c'est un exemple trivial mais un .zip ou un .tar.gz peuvent utiliser un autre caractère de fin de ligne). Les artefacts non filtrés sont inutiles de toute façon. –

+0

Par exemple, j'ai une douzaine d'environnements pour le déploiement de mon application. Si j'appliquais le filtrage pour n'importe quel artefact au moment de la construction, alors je devais déployer dans un repo des douzaines d'artefacts différents. Ou je peux garder une version "non filtrée" (raw) dans le repo et utiliser le filtrage puis produire une application finale uniquement. Je voudrais pouvoir générer un artefact "unfilterd" dans un projet (ça va) et produire, personnaliser l'application finale dans le second projet. Le deuxième projet doit supprimer les espaces réservés des artefacts générés dans le premier projet. – eugenn

Questions connexes