2017-01-18 32 views
0

我在src/main/resources下有一個「production」logback配置文件logback.xml ...但該目錄還包含「testing」logback配置文件logback-test.xml(該logback首先查找)。Gradle - 如何從可執行jar中排除資源?

創建可執行jar時,我想刪除「testing」xml文件。

我想這

jar { 
    manifest { 
     // PS this is the correct line for Shadow Plugin... 
     attributes 'Class-Path': '/libs/a.jar' 
     attributes 'Main-Class': 'core.MyMainClass' 
    } 
    exclude("**/resources/*test*") 
} 

,我嘗試這個

jar { 
    manifest { 
     attributes 'Class-Path': '/libs/a.jar' 
     attributes 'Main-Class': 'core.MyMainClass' 
    } 
    doLast { 
     exclude("**/resources/*test*") 
    } 
} 

...我究竟做錯了什麼?

我發現here,我可能是真難爲我自己把這些個XML下/ src目錄/主/資源......所以我創建src下一個新的目錄/的logback ,並將文件放在那裏。我已將此添加到類路徑(如的logback說這就是它看起來對這些文件)通過這樣做:

test { 
    classpath += files('src/logback') 
} 

有趣的是,還有的含義在測試過程中記錄發生OK,這是足以讓生成的可執行程序jar在運行時使用logback OK。

不幸的是,配置 「shadowJar」 task這樣

shadowJar { 
    baseName = 'DocumentIndexer' 
    classifier = null 
    version = project.version 
    exclude("logback/*test*") 
} 

或配置 「罐子」 task這樣的:

jar { 
    manifest { 
     attributes 'Class-Path': '/libs/a.jar' 
     attributes 'Main-Class': 'core.ConsoleIOHandler' 
    } 
    exclude("logback/*test*") 
} 

...只是拒絕工作:文件的logback測試.xml仍然存在於jar中。

回答

0

我從gradle.org的論壇得到了the answer

基本的答案是,「測試」logback配置文件應該在src/test/resources下,而「production」配置文件應該在src/main/resources下。這樣前者將被排除在罐子之外。

回答者還表示「資源」是指定相對路徑的根源之一。