2016-11-13 3 views
5

Eines meiner Java-Projekte exportiert eine ausführbare "fat-JAR" -Datei, die für die Bereitstellung bereit ist. Für die Erstellung der JAR-Datei Gradle verwenden, folgte ich den Anweisungen here beschrieben:log4j.properties wird beim Erstellen eines "Fat-JAR" mit Gradle überschrieben

task fatJar(type: Jar) { 
    manifest { 
     attributes 'Implementation-Title': '<HUMAN_READABLE_TITLE_OF_YOUR_PACKAGE>', 
      'Implementation-Version': version, 
      'Main-Class': '<PATH_TO_THE_MAIN_APPLICATION_CLASS>' 
    } 

    baseName = project.name + '-all' 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    with jar 
} 

Die Aufgabe dargestellt wird rekursiv durch Abhängigkeitsbaum gehen, JAR-Dateien entpacken, wenn nötig, und Squash alles zusammen. Das einzige Problem bisher ist, dass einige meiner Abhängigkeiten mit ihren eigenen log4.properties Dateien kommen, die schließlich die eine überschreiben, die ich selbst geschrieben habe. Alle von ihnen befinden sich innerhalb der gleichen Ebene in ihren jeweiligen Ressourcen folders, so wenn die Dateien zusammengeführt werden, scheinen die späteren diejenigen zu überschreiben, die zuvor hinzugefügt wurden.

Bis jetzt ist die einzige Lösung, die ich gefunden habe, manuell den Pfad zur richtigen Datei mit einem Befehlszeilenparameter festzulegen. Ich möchte schließlich in der Lage sein, die JAR selbst ohne zusätzlichen Aufwand auszuführen.

Was wäre ein guter Weg, um meine log4.properties zu behalten und auszuschließen, dass die anderen zum Paket hinzugefügt werden?

Antwort

2

Sie können die Datei aus der Sammlung von Dateien ausschließen, die in das Erstellungs-JAR integriert werden sollen.

from { 
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
} { 
    exclude "dir/subdir/the_file_to.exclude". 
} 
Verwandte Themen