2016-11-13 83 views
5

我的一個Java項目導出了一個可執行的「fat-JAR」文件,可供部署。爲了創建使用搖籃JAR文件,我跟着指示描述here使用Gradle創建「fat-JAR」時會覆蓋log4j.properties

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 
} 

說明會遞歸經過依賴關係樹的任務,如果需要解壓的JAR和壁球一切融合在一起。到目前爲止唯一的問題是,我的一些依賴關係帶有自己的log4.properties文件,這些文件最終會覆蓋我自己編寫的文件。它們都在相同的資源folders之內,因此當文件合併在一起時,後面的文件似乎會覆蓋之前添加的文件。

到目前爲止,我發現的唯一解決方案是使用命令行參數手動將路徑設置爲正確的文件。我最終希望能夠執行JAR本身,而無需額外的開銷。

什麼是保持我的log4.properties並排除其他人被添加到包中的好方法?

回答

2

您可以從要合併到構建JAR中的文件集合中排除該文件。

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