J'ai un projet WAR très simple et je veux inclure un répertoire nommé META-INF
en haut du dossier de sortie des classes où se trouvent toutes les classes Java compilées. J'utilise Maven, mais il semble que, par défaut, Maven n'inclut rien qui ne soit pas une classe Java. Il ignore donc mon META-INF
qui se trouve en haut de l'arborescence src
répertoire. Le site META-INF
Le répertoire contient un fichier nommé persistence.xml
. Avez-vous des indications rapides sur la manière de demander à Maven de placer ce répertoire et ce fichier dans le dossier de sortie ?
Réponses
Trop de publicités?En général, pour un projet Maven basé sur Java, les fichiers non sources doivent être placés dans le répertoire src/main/resources
dans le sous-répertoire du projet. Le contenu de ce resources
sont copiés dans le répertoire de sortie (par défaut, target/classes
) pendant le processus-ressources phase de la construction.
Pour les projets Maven WAR, c'est un peu plus compliqué : il y a aussi la fonction src/main/webapp
dans lequel Maven s'attend à trouver WEB-INF/web.xml
. Pour construire votre fichier WAR, ce fichier doit exister ; sinon, vous verrez un message d'erreur comme celui-ci :
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
Como el WEB-INF
doit exister sous src/main/webapp
je recommanderais d'éviter de le définir à nouveau dans la section src/main/resources
. Bien que cela soit parfaitement valable et que le contenu des deux répertoires soit fusionné, cela peut prêter à confusion si un fichier est défini dans les deux. Le contenu de src/main/resources
seront prioritaires car ils seront copiés par-dessus le contenu de l'élément src/main/webapp
.
Je vais répondre indirectement à votre question en disant que si vous avez déjà fait le saut vers Maven2, je vous recommande vivement d'utiliser le plugin Archetype. L'utilisation de l'archétype webapp vous permettra d'obtenir une structure de répertoire canonique. Toute autre personne qui consulte vos sources saura immédiatement où se trouve chaque élément et il n'y aura aucun doute quant à l'emplacement de vos fichiers.
Donnez l'entrée suivante dans POM.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<!--webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory-->
<packagingExcludes>**/web.xml</packagingExcludes>
</configuration>
</plugin>