Wo soll ich die Datei log4j.properties ablegen, wenn ich die herkömmlichen Maven-Verzeichnisse verwende?
java
maven
configuration
log4j
user496949
quelle
quelle
Antworten:
src/main/resources
ist die "Standardplatzierung" dafür.Update: Das Obige beantwortet die Frage, ist aber nicht die beste Lösung. Schauen Sie sich die anderen Antworten und Kommentare dazu an ... Sie würden wahrscheinlich nicht Ihre eigenen Protokollierungseigenschaften mit dem JAR versenden, sondern es dem Client überlassen (z. B. App-Server, Bühnenumgebung usw.), um die gewünschte Protokollierung zu konfigurieren. Daher ist es
src/test/resources
meine bevorzugte Lösung , es einzulegen.Hinweis: Das Sprechen der konkreten log Config an den Client / Benutzer verlassen, sollten Sie ersetzen betrachten
log4j
mitslf4j
in Ihrer Anwendung.quelle
resources
undlog4j.properties
in dem in der Antwort genannten Ordner.src/main/resources
werden standardmäßig kopiert nachtarget/classes
Durch einfaches Einlegen
src/main/resources
wird es im Artefakt gebündelt. Wenn Ihr Artefakt beispielsweise ein JAR ist, haben Sie daslog4j.properties
Datei darin, wodurch der ursprüngliche Punkt verloren geht, an dem die Protokollierung konfigurierbar ist.Normalerweise lege ich es ein
src/main/resources
und setze es so, dass es wie folgt ausgegeben wird:Damit log4j es tatsächlich sehen kann, müssen Sie außerdem das Ausgabeverzeichnis zum Klassenpfad hinzufügen. Wenn es sich bei Ihrem Artefakt um eine ausführbare JAR handelt, haben Sie wahrscheinlich das Maven-Assembly-Plugin verwendet, um es zu erstellen. In diesem Plugin können Sie den aktuellen Ordner der JAR zum Klassenpfad hinzufügen, indem Sie einen
Class-Path
Manifesteintrag wie folgt hinzufügen :Jetzt befindet sich die Datei log4j.properties direkt neben Ihrer JAR-Datei und kann unabhängig konfiguriert werden.
Um Ihre Anwendung direkt von Eclipse aus auszuführen, fügen Sie das
resources
Verzeichnis Ihrem Klassenpfad in Ihrer Ausführungskonfiguration hinzu:Run->Run Configurations...->Java Application->New
Wählen Sie dieClasspath
Registerkarte aus, wählen SieAdvanced
Ihrsrc/resources
Verzeichnis aus und navigieren Sie zu ihm .quelle
${project.build.directory}
oder auf den tatsächlichen Pfad bearbeitet werden, auf dem sich das Projekt auf meinem lokalen Laufwerk befindet?Einige "Data Mining" -Konten dafür
src/main/resources
sind der typische Ort.Ergebnisse bei der Google-Codesuche :
src/main/resources/log4j.properties
: 4877src/main/java/log4j.properties
: 215quelle
resources
nichtresource
, wenn ich mich richtig erinnere.resource
war nur ein Tippfehler.Die zum Initialisieren des Projekts verwendeten Ressourcen werden vorzugsweise im Ordner src / main / resources abgelegt . Um das Laden dieser Ressourcen während des Builds zu ermöglichen, können Sie einfach Einträge in der pom.xml im Maven-Projekt als Build-Ressource hinzufügen
In diesem Ordner können auch andere .properties-Dateien gespeichert werden, die für die Initialisierung verwendet werden. Die Filterung wird auf true gesetzt, wenn Sie einige Variablen in den Eigenschaftendateien des Ressourcenordners haben und sie aus den Eigenschaftendateien der Profilfilter füllen möchten, die in src / main / filter gespeichert sind, die als Profile festgelegt sind. Dies ist jedoch ein ganz anderer Anwendungsfall . Im Moment können Sie sie ignorieren.
Dies ist ein großartiges Ressourcen- Maven-Ressourcen-Plugin . Es ist nützlich. Durchsuchen Sie einfach auch andere Abschnitte.
quelle
Wenn das Speichern von Ressourcendateien an einem anderen Speicherort nicht die beste Lösung ist, die Sie verwenden können:
Zum Beispiel, wenn Ressourcendateien (z. B. jaxb.properties) zusammen mit Java-Klassen tief in Pakete eindringen.
quelle
Wenn Ihre Datei log4j.properties oder log4j.xml nicht unter src / main / resources gefunden wird, verwenden Sie diese PropertyConfigurator.configure ("log4j.xml").
quelle
Fügen Sie den folgenden Code aus den Ressourcen-Tags in Ihrer pom.xml in Build-Tags hinzu. Das bedeutet, dass sich Ressourcen-Tags innerhalb der Build-Tags in Ihrer pom.xml befinden müssen
quelle