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 Java compilées. J'utilise Maven, mais il semble que par défaut Maven n'inclura rien qui ne soit pas = Java class. Il ignore donc mon META-INF
répertoire qui se trouve en haut du répertoire src
. Le META-INF
le répertoire contient un fichier nommé persistence.xml
. Des conseils rapides sur la façon de demander à Maven de placer ce répertoire et ce fichier dans le dossier de sortie?
En général, pour un projet Maven basé sur Java, les fichiers non source doivent être placés dans le src/main/resources
sous-répertoire du projet. Le contenu de ce répertoire resources
est copié dans le répertoire de sortie (par défaut, target/classes
) pendant la phase process-resources de la construction.
Pour les projets Maven WAR, c'est un peu plus compliqué: il y a aussi le src/main/webapp
répertoire, dans lequel Maven s'attend à trouver WEB-INF/web.xml
. Pour créer 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)
Comme le WEB-INF
le répertoire doit exister sous src/main/webapp
, Je vous recommande d'éviter de le redéfinir dans src/main/resources
. Bien que cela soit parfaitement valide et que le contenu des deux répertoires soit fusionné, cela peut devenir déroutant si un fichier est défini dans les deux. Le contenu de src/main/resources
aura priorité car ils sont copiés par-dessus le contenu de src/main/webapp
.
Mettez ceci dans pom.xml:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Je répondrai indirectement à votre question en disant que si vous avez déjà fait le saut vers Maven2, je recommanderais certainement d'utiliser le plugin d'archétype. L'utilisation de l'archétype webapp vous assurera de vous retrouver avec une structure de répertoire canonique. Quiconque regarde votre source saura immédiatement où tout se trouve et il ne sera pas question de savoir où vont vos fichiers.
Donnez l'entrée ci-dessous 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>