web-dev-qa-db-fra.com

Spécifier des ressources communes dans un projet Maven multi-module

Est-il possible de partager des ressources entre les modules d'un projet parent dans Maven? Par exemple, j'aimerais spécifier un fichier log4j.properties pour tous les modules d'un projet Maven multi-modules.

En général, j'utilise Eclipse IDE pour créer le projet parent en choisissant un projet général, puis le convertit en projet Maven en spécifiant un conditionnement de pom. Cela crée une structure de projet "propre" sans les dossiers src et etc. Je me demande où une telle ressource partagée devrait être placée dans ce cas.

EDIT1 : Je voudrais mettre les ressources communes dans le projet parent.

24
jilt3d

Je créerais un module "base" supplémentaire (projet), empaquetant "jar", contenant les ressources communes dans src/main/resources. Ensuite, je ferais en sorte que les autres modules dépendent de ce projet. Maintenant, ils voient les ressources communes sur leurs chemins de classes.

25
Andreas_D

Une autre possibilité consiste à utiliser un groupe de ressources distant. Vous pourrez le configurer dans le projet parent. Dans cet exemple, je voulais copier des fichiers uniquement pour des tests. Si vous utilisez ceci, vous devrez créer le paquet dans un autre projet. 

    <plugin>      
        <groupId>org.Apache.maven.plugins</groupId>         
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version>
        <configuration>
            <resourceBundles>
                <resourceBundle>es.sca:myBundle:1.0.0</resourceBundle>
            </resourceBundles>
            <attachToMain>false</attachToMain>
            <attachToTest>true</attachToTest>
            <appendedResourcesDirectory>${basedir}/src/test/resources</appendedResourcesDirectory>
        </configuration>            
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
            </execution>
        </executions>                   
    </plugin>                 
4
borjab

Oui, cela semble une solution possible. Mais j'étais intéressé si ce Il est possible de spécifier ces ressources dans le projet parent (sans introduire un module supplémentaire) puisque le projet parent spécifie tout les dépendances communes et les configurations Maven pour l'enfant modules, je pense que le projet parent est le lieu le plus approprié aussi pour les ressources communes.

Dans le cas du type de package pom , lorsque but package est spécifié pour gérer vos ressources partagées, ajoutez simplement next (vérifier les dossiers) dans build section du fichier pom:

        <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
       <executions>
           <execution>
               <id>copy-config-files</id>
               <phase>package</phase>
               <goals>
                   <goal>copy-resources</goal>
               </goals>
               <configuration>
                   <outputDirectory>${project.build.directory}/logconfig</outputDirectory>
                   <resources>
                       <resource>
                        <filtering>false</filtering>
                        <directory>${project.basedir}/src/main/resources</directory>
                       </resource>
                   </resources>
               </configuration>
        </execution>
       </executions>
    </plugin>
1
harvyS

Je pense que vous pouvez simplement ajouter les éléments ressources et/ou testResources à votre pom . E.g. pour accéder à un répertoire de ressources de test supplémentaire, ajoutez:

    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
        <testResource>
            <directory>../global/src/test/resources</directory>
        </testResource>
    </testResources>

voir Maven - Remplacer le dossier de ressources de test

0
work.asr