2009-06-04 5 views
13

Gibt es eine Best Practice dafür, wo Konfigurationsdateien in einem Java-Projekt gespeichert werden sollen. Der Dateityp ist in diesem Fall eine Java-Eigenschaftendatei, aber ich verwende andere Dateitypen in anderen Projekten.Was ist die beste Vorgehensweise für den Speicherort von Java-Anwendungskonfigurationsdateien?

Wäre die Empfehlung von Standalone-Anwendung (.jar) zu Web-App (.war)?

+0

Möchten Sie in der Lage sein, die Konfiguration zu ändern, nachdem Sie einen Build erstellt haben oder möchten, dass die Konfiguration Teil der .jar/.war-Datei ist bauen? – ScArcher2

+0

@ ScArcher2, für unsere Produktionsversion hier haben wir Release-Anfragen, so dass das Ändern der Konfigurationsdatei genauso mühsam ist wie die gesamte Paketdatei. Also habe ich es vorgezogen, die Konfiguration im Paket zu behalten –

Antwort

8

Sie werden feststellen, dass viele Open-Source-Projekte folgen der directory structure used by Maven. In dieser Konfiguration wird der Anwendungsquellcode in src/main/java, Anwendungsressourcen, einschließlich Eigenschaftendateien, in src/main/resources und anderen Konfigurationsdateien in src/main/config gespeichert. Dateien, die sich auf Komponententests beziehen, verwenden eine ähnliche Verzeichnisstruktur. src/test/java und src/test/resources.

Persönlich verwende ich dieses Layout wegen seiner weit verbreiteten Verwendung. Ich halte auch ein "etc" -Verzeichnis unter dem Projektstamm, um Dateien aufzunehmen, die nicht direkt mit der Anwendung zusammenhängen. ZB halte ich Konfigurationsdateien für PMD und Checkstyle in etc.

4

Im Allgemeinen ist es üblich, ein resources Verzeichnis für Konfigurationsdateien zu haben, das durch den Build-Prozess in das Build-Artefakt kopiert wird. Maven verwendet dies in seiner default project structure. Innerhalb des Verzeichnisses resources können Sie auch ein Verzeichnis META-INF und/oder ein Verzeichnis WEB-INF in einer als Krieg verpackten Anwendung haben.

1

Ich benutze:

  • META-INF/ für jar Dateien
  • WEB-INF/ für Krieg Dateien
+0

Ist Meta-Inf auf dem Standard-Klassenpfad? –

Verwandte Themen