2010-11-15 4 views
41

Je veux mettre un fichier de configuration dans mon projet Maven. En regardant the standard directory layout, il y a deux endroits qui semblent raisonnables, "src/main/resources" et "src/main/config". Quelqu'un pourrait-il expliquer la différence entre ceux-ci, et expliquer quand vous mettre quelque chose dans config et quand dans resources?En maven, quelle est la différence entre main/resources et main/config?

Dans ce cas, le fichier que je regarde est ehcache.xml, mais ma question est ehcache pas spécifique, je suis curieux de log4j.properties etc.

Un peu de googler découvert this person had the same question, mais les réponses semblaient contradictoire, et pas très autoritaire.

+0

Je pense avoir trouvé un cas d'utilisation pour le répertoire principal/config. J'ai un couple de fichiers de configuration qui sont facultatifs à utiliser et ne sont pas utiles dans le classpath. Exemples de fichiers de configuration pour l'application et le conteneur sur lequel elle est déployée. Je ne trouve nulle part ailleurs pour eux. – akostadinov

+0

Ceci peut être un bon endroit pour les fichiers de configuration du plug-in eclipse (findbugs, checkstyle, etc.) Je ne voudrais pas que ceux-ci soient inclus dans le fichier archive. – jbruni

Répondre

47

L'échange de courrier électronique à http://www.mail-archive.com/[email protected]/msg90985.html dit:

"Tout cela est la théorie ... Peut-être en écrivant les docs, quelqu'un impliqué dans le développement Maven pensait que ce Il peut être utile d'avoir un répertoire src/main/config et donc il a été inclus dans docs, mais comme il n'a jamais été implémenté dans le code, il n'est pas utilisé aujourd'hui "

et

"Le répertoire [src/main/config] ne montre pas sur le chemin de classe pour que les classes d'application ou de test ne peut pas lire quoi que ce soit en elle. "

Donc il suffit d'utiliser src/main/resources

Note:. Je ne sais pas si cela est vrai (je suis le demandeur question), mais cela expliquerait pourquoi tant de gens sur le web recommandent src/main/resources pour log4j Si les gens sont d'accord c'est la bonne réponse pourriez-vous me faire savoir (commenter ou voter) Je l'ai mis ici pour sauver d'autres personnes la dactylographie

+1

Ceci est correct, utilisez juste 'src/xxx/resources' pour tous les fichiers non sources que vous voulez obtenir sur le chemin de classe. Bien sûr, vous pouvez décider d'ajouter d'autres répertoires, mais vous devrez ajouter une configuration spécifique au POM. –

+0

Merci pour la clarification. Je regardais la documentation et la [section mise en page répertoire standard] (http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html) ne fait aucune mention de ceci :( – seneyr

+2

J'utilise src/main/config pour contenir les éléments de configuration que je ne veux pas emballer dans la cible, comme les scripts de configuration de JBoss. – jbruni

7

scr/main/resources est un endroit où vous mettez vos images, sons, modèles, ensembles de langues, fichiers textuels et binaires utilisés par le code source. Tous les fichiers de configuration comme excache.xml, log4j.properties, logback.xml et autres vont à src/main/config.

Ajouter à votre pom.xml:

<build> 
    <resources> 
     <resource> 
      <targetPath>.</targetPath> 
      <directory>src/main/config</directory> 
     </resource> 
    </resources> 
</build> 
+0

cela semble raisonnable pour moi, mais avez-vous une référence? Il existe divers e-mails, par exemple http://markmail.org/message/lve4d2qzba2lritd disant ressources est l'emplacement standard pour log4j.properties –

+0

Impossible de trouver. C'est juste un bon sens. Où que vous le placiez, assurez-vous qu'il se trouve sur un chemin de classe afin qu'il soit récupéré par la bibliothèque log4j. –

+0

Merci. Existe-t-il un moyen standard pour ajouter ce répertoire au classpath sous maven? (Je suis un nouvel utilisateur de maven) –

0

Cas d'utilisation est assez simple si vous me demandez. (Il semble src/main/config a été supprimé depuis la mise en page standard du répertoire)

  • /src/main/ressources continuent en pot et donc sur classpath
  • /src/main/config est prévu pour le plugin d'assemblage où vous pouvez construire un fichier zip :

    hello-world.zip 
    lib/ 
        <dependencies> 
    bin/ 
        run.bat 
        run.sh 
    config/ 
        config.properies 
    
Questions connexes