2009-06-04 13 views
13

¿Existe una mejor práctica para que los archivos de configuración se almacenen en un proyecto Java? El tipo de archivo es un archivo de propiedades de Java en este caso, pero sí uso otros tipos de archivos en otros proyectos.¿Cuál es la mejor práctica para la ubicación de los archivos de configuración de la aplicación Java?

¿La recomendación varía de la aplicación independiente (.jar) a la aplicación web (.war)?

+0

¿Desea poder cambiar la configuración después de hacer una compilación o desea que la configuración forme parte del archivo .jar/.war que ¿construir? – ScArcher2

+0

@ ScArcher2, para nuestro lanzamiento de producción aquí tenemos solicitudes de lanzamiento, por lo que cambiar el archivo de configuración es tan complicado como hacer todo el archivo del paquete. Por lo tanto, prefiero mantener la configuración en el paquete –

Respuesta

8

Usted encontrará que muchos los proyectos de código abierto siguen el directory structure used by Maven. En esta configuración, el código fuente de su aplicación se guarda en src/main/java, recursos de la aplicación, incluidos archivos de propiedades, en src/main/resources y otros archivos de configuración en src/main/config. Los archivos relacionados con las pruebas unitarias utilizan una estructura de directorios similar; src/test/java y src/test/resources.

Personalmente tiendo a utilizar este diseño debido a su uso generalizado. También guardo un directorio "etc." debajo de la raíz del proyecto para alojar archivos que no están directamente relacionados con la aplicación. Por ejemplo, guardo archivos de configuración para PMD y Checkstyle en etc.

4

En general, una práctica común es tener un directorio resources para los archivos de configuración que se copia en el artefacto de construcción por el proceso de compilación. Maven usa esto en su default project structure. Dentro del directorio resources, también puede tener un directorio META-INF y/o un directorio WEB-INF en una aplicación empaquetada como una guerra.

1

que utilizo:

  • META-INF/ para frasco archivos
  • WEB-INF/ para guerra archivos
+0

¿Meta-inf está en el classpath predeterminado? –

Cuestiones relacionadas