2016-11-13 40 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". 
}