Maven: y compris un dossier META-INF dans le dossier classes
j'ai un projet de guerre 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'inclue rien qui ne soit pas une classe Java. De sorte qu'il ignore mon META-INF
répertoire qui se trouve en haut de la src
répertoire.
META-INF
répertoire contient un fichier nommé persistence.xml
. N'importe quels conseils rapides sur la façon de demander à Maven de mettre ce répertoire et ce fichier dans le dossier de sortie?
5 réponses
en général, pour un projet Maven basé sur Java, les fichiers non-source doivent aller dans le src/main/resources
sous-répertoire du projet. Le contenu de cette resources
répertoire sont copiés dans le répertoire de sortie (par défaut, target/classes
) au cours de l' processus-ressources phase de 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 construire votre fichier de guerre, ce fichier doit exister.; autrement, vous verrez un message d'erreur comme ceci:
[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)
WEB-INF
répertoire doit exister sous src/main/webapp
, je recommande d'éviter de le définir à nouveau dans src/main/resources
. Bien que ceci soit parfaitement valide et que le contenu des deux répertoires soit fusionné, il peut devenir confus si un fichier est défini dans les deux répertoires. Le contenu de src/main/resources
aura préséance lorsqu'ils sont copiés sur le dessus du contenu de src/main/webapp
.
je vais répondre indirectement à votre question en disant que si vous avez déjà fait le saut à Maven2 je recommande certainement l'utilisation du Plugin Archetype. L'utilisation de l'archetype webapp vous assurera de finir avec une structure de répertoire canonique. N'importe qui d'autre regardant votre source saura immédiatement où tout est et il n'y aura aucune question quant à l'endroit où vos dossiers vont.
mettez ça 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>
donner 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>