2017-01-18 72 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下。这样前者将被排除在罐子之外。

回答者还表示“资源”是指定相对路径的根源之一。

相关问题