2017-08-29 3 views
0

Dans mon projet MAVEN j'essaye de construire un paquet de guerre avec certaines ressources basées sur un profil (défini dans mon settings.xml).Comment inclure/exclure des ressources dans le paquet guerre maven

pom.xml:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
     <version>3.1.0</version> 
     <configuration> 
      <!-- archiveClasses>true</archiveClasses Enable this line will remove compiled classes from package --> 
      <!-- packagingExcludes>view/test/**,WEB-INF/classes/**</packagingExcludes Does not work --> 
      <packagingExcludes>view/test/**</packagingExcludes> 
      <webResources> 
       <resource> 
        <directory>src/main/webapp/</directory> 
        <filtering>false</filtering> 
        <includes> 
         <include>**/**</include> 
        </includes> 
       </resource> 
       <resource> 
        <directory>resources/</directory> 
        <targetPath>WEB-INF/classes</targetPath> 
        <filtering>false</filtering> 
        <!-- excludes><exclude>**</exclude></excludes Does not work --> 
        <includes> 
         <include>ehcache.xml</include> 
         <include>${include.files}</include> 
        </includes> 
       </resource> 
      </webResources> 
      <includeEmptyDirectories>true</includeEmptyDirectories> 
     </configuration> 
    </plugin> 

Mon dossier src/main/resources est vide, donc dans mon paquet, il n'y a pas de fichiers de configuration qui ne sont pas attendus. Mais quand je déplace mon dossier resources dans src/main/resources alors les profils ne fonctionnent plus et le paquet contient toujours tous les dossiers du dossier resources. Comment modifier mon fichier pom.xml afin que le dossier resources puisse être déplacé dans src/main/resources selon ce que je comprends c'est où vous stockez des ressources comme les fichiers de configuration etc («meilleure pratique»)?

Répondre

1

Voyez si vous pouvez réorganiser vos ressources de sorte que vous puissiez appliquer un filtre aux ressources et que la plupart des fichiers sont toujours présents pour chaque configuration. Supposons que vous ayez un fichier de propriétés qui nécessite des valeurs différentes pour différentes configurations. Vous pouvez remplacer la valeur à une variable comme ceci:

url=${url} 
mode=${mode} 

Maintenant, vous pouvez utiliser des profils pour définir les valeurs pour les fichiers qui doivent être filtrés et ceux qui doivent être totalement exclues pour cette configuration:

<profile> 
    <id>production</id> 
    <build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering>     
       <excludes> 
        <exclude>[non-resource file #1]</exclude> 
        <exclude>[non-resource file #2]</exclude> 
        <exclude>[non-resource file #3]</exclude> 
       </excludes> 
      </resource> 
     </resources> 
    </build>  
    <properties> 
     <url>www.something.com</url> 
     <mode>production</mode> 
    </properties> 
</profile> 
<profile> 
    <id>development</id> 
    <build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering>     
       <excludes> 
        <exclude>[non-resource file #1]</exclude> 
        <exclude>[non-resource file #2]</exclude> 
        <exclude>[non-resource file #3]</exclude> 
       </excludes> 
      </resource> 
     </resources> 
    </build>  
    <properties> 
     <url>localhost:8080/something</url> 
     <mode>development</mode> 
    </properties> 
</profile> 

Enfin, vous pouvez supprimer la balise webResources dans votre-plugin maven-guerre. Il va maintenant chercher src/main/resources car c'est une ressource configurée.

+0

Henry merci pour votre réponse, malheureusement lors de la liste des fichiers d'exclusion, ils apparaissent toujours dans le paquet guerre. – jarnohenneman

+0

A supprimé la balise webResources entière dans le plugin maven-war. – jarnohenneman

+0

[AVERTISSEMENT] Des problèmes sont survenus lors de la création des paramètres effectifs [AVERTISSEMENT] Balise non reconnue: 'build' (position: START_TAG vue ... \ r \ n ... @ 35: 14) @ D: \ Users \ IE329745 \ .m2 \ settings.xml, ligne 35, colonne 14 [AVERTISSEMENT] – jarnohenneman