2014-02-20 17 views
6

Was passiert, wenn ich eine Maven-Anwendung habe, die aus mehreren Modulen besteht und jede von ihnen eine log4j.properties-Datei enthält, werden sie zusammengeführt oder von einer bestimmten überschrieben (wenn ja, welche)?log4j.properties in mehreren Maven-Modulen?

Update: Nach Ihrer Beratung habe ich ausgeschlossen nun die zusätzliche Eigenschaften wie dies in meinem Poms:

<dependency> 
[...] 
<excludes><exclude>**/log4j.properties</exclude></excludes> 
</dependency> 

PS: Doch der „schließt“ Tag wird von Maven und „Ausschlüssen“ nur für nicht erkannt funktioniert Abhängigkeiten, keine Ressourcen.

aktualisiert

in log4j in a multi-module Maven project gerade herausgefunden, dass ich nur die log4j.properties in src/test/Ressourcen, so dass sie in der ausführbaren Moduls sind sowieso nicht enthalten setzen kann !.

+1

Ressourcen auszuschließen Sie das Maven Plugin Ressourcen verwenden sollte (http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html). Die Tag-Hierarchie ist build/resources/excludes/exclude – polypiel

+0

Aber wie kann ich es aus einer bestimmten Abhängigkeit ausschließen, aber von einem anderen abhalten? –

Antwort

6

Sie werden nie zusammengeführt. Im Allgemeinen werden die log4j.properties-Dateien überschrieben und Sie können nicht genau sagen, welche.

Es hängt von der Reihenfolge des Ladens der Jar-Dateien nach Container ab.

Es wird daher empfohlen, eine log4j.properties mit mehreren Appendern für jeweils andere Submodule im Kernmodul Ihrer Anwendung zu verwenden.

Aber es würde ein Problem beim unabhängigen Testen/Arbeiten mit Untermodulen verursachen, da es die Protokollierung getrennt testet. In unserem Fall wird die Quellensteuerungsversion von pom immer zum Ausschließen von Ressourcen verwendet (wodurch die Eigenschaftendatei beim Erstellen des jars ausgeschlossen wird). In Developer Local haben Entwickler diesen Ausschluss jedoch in POM kommentiert und können unabhängig voneinander arbeiten.

+0

Ich verstehe nicht, was Sie mit "in Entwickler lokal" meinen. Also gibt es verschiedene log4j.properties zum Testen und die Webanwendung selbst? –

+1

Ich habe über 'pom.xml' gesprochen, die Version der Quellcodeverwaltung wird die Datei log4j.properties immer ausschließen, während die JAR-Datei erstellt wird. Aber angenommen, ein Entwickler möchte in seiner lokalen Umgebung testen, muss er den Ausschluss in "pom" kommentieren, damit diese log4j.properties für lokale Tests in sein Jar eingeschlossen werden. – sakura

+0

Es ist zu kompliziert für mich, eine pom.xml zu pflegen, die sich lokal von der Versionskontrolle unterscheidet, aber ich verstehe den Ansatz! Ich werde jetzt einfach die anderen log4j.properties in src/test/resource ablegen. –

1

Zum Beispiel, wenn Sie 2 Projekte haben, eines für Daten und ein anderes für die Präsentation. Und beide haben die log4j.properties. Und wenn Sie die WAR-Datei bereitstellen, die auch die darin enthaltene Datendatei enthält. Nur das Präsentationsprojekt hat die Wirkung. Und die log4.properties im Datenprojekt würden ignoriert werden. Sie werden niemals zusammengeführt oder von selbst überschrieben.

Verwandte Themen