Maven: Inclure un dossier META-INF dans le dossier des classes

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 Maven n’inclue par défaut rien qui ne soit une classe Java. Donc, il ignore mon META-INF qui se trouve en haut du répertoire src . Le META-INF contient un fichier nommé persistence.xml . Des indications rapides sur la manière 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 se trouver dans le sous-répertoire src/main/resources du projet. Le contenu de ce répertoire de resources est copié dans le répertoire de sortie (par défaut, target/classes ) pendant la phase de ressources de processus de la génération.

Pour les projets WAR Maven, c’est un peu plus compliqué: il y a aussi le répertoire src/main/webapp , 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 atsortingbute is required (or pre-existing WEB-INF/web.xml if executing in update mode) 

Comme le WEB-INF doit exister sous src/main/webapp , je vous recommande de ne pas le définir à nouveau dans src/main/resources . Bien que cela soit parfaitement valide et que le contenu des deux répertoires soit fusionné, il peut être déroutant si un fichier est défini dans les deux. Le contenu de src/main/resources aura la priorité car ils sont copiés sur le haut du contenu de src/main/webapp .

Maven veut ce type d’information dans le dossier des ressources. Voir ici pour plus d’informations.

 Project |-- pom.xml `-- src `-- main |-- java `-- resources 

Pour spécifier des répertoires de ressources supplémentaires, voir ici .

Je répondrai 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 de l’application Web vous permettra de vous retrouver avec une structure de répertoire canonique. Si vous consultez votre source, vous saurez immédiatement où tout se trouve et vous ne saurez pas où vont vos fichiers.

Mettez ceci dans pom.xml:

   org.apache.maven.plugins maven-war-plugin 2.1.1  false   

Donnez l’entrée ci-dessous dans POM.xml

  org.apache.maven.plugins maven-war-plugin 2.1.1   **/web.xml