2009-06-04 14 views
13

Existe-t-il une meilleure pratique pour l'emplacement où les fichiers de configuration doivent être stockés dans un projet Java. Le type de fichier est un fichier de propriétés Java dans ce cas, mais j'utilise d'autres types de fichiers dans d'autres projets.Quelle est la meilleure pratique pour l'emplacement des fichiers de configuration d'application Java?

La recommandation peut-elle varier d'une application autonome (.jar) à une application Web (.war)?

+0

Voulez-vous être en mesure de modifier la configuration après une construction ou voulez-vous que la configuration fasse partie du fichier .jar/.war construire? – ScArcher2

+0

@ ScArcher2, pour notre version de production ici, nous avons des demandes de version, donc changer le fichier de configuration est tout aussi compliqué que de faire tout le fichier du paquet. Donc, je suis venu à préférer garder la configuration dans le paquet –

Répondre

8

Vous verrez que beaucoup projets open-source suivent le directory structure used by Maven. Dans cette configuration, le code source de votre application est conservé dans src/main/java, les ressources de l'application, y compris les fichiers de propriétés, dans src/main/resources et les autres fichiers de configuration dans src/main/config. Les fichiers liés aux tests unitaires utilisent une structure de répertoire similaire; src/test/java et src/test/resources.

Personnellement, j'ai tendance à utiliser cette disposition en raison de son utilisation répandue. Je garde également un répertoire "etc" sous la racine du projet pour stocker les fichiers qui ne sont pas directement liés à l'application. Par exemple, je garde les fichiers de configuration pour PMD et Checkstyle dans etc.

4

En général, une pratique courante consiste à avoir un répertoire resources pour les fichiers de configuration qui est copié dans l'artefact de construction par le processus de construction. Maven utilise ceci dans son default project structure. Dans le répertoire resources, vous pouvez également avoir un répertoire META-INF et/ou un répertoire WEB-INF dans une application emballée comme une guerre.

1

J'utilise:

  • META-INF/ pour pot fichiers
  • WEB-INF/ pour guerre fichiers
+0

Est-ce que meta-inf sur le classpath par défaut? –

Questions connexes