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?

38
demandé sur Christian Conti-Vock 2009-08-19 06:04:11

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.

81
répondu Rich Seller 2012-04-27 19:26:27

Maven veut ce type d'information dans le dossier 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.

11
répondu jt. 2009-08-19 02:57:49

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.

4
répondu Zac 2009-08-19 03:11:05

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>
4
répondu Makub 2012-04-26 12:21:29

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>
0
répondu Java Guy 2011-04-13 17:09:34