创建" fat-JAR"时会覆盖log4j.properties。使用Gradle

时间:2016-11-13 07:05:30

标签: java gradle jar log4j

我的一个Java项目导出了一个可执行文件" fat-JAR"文件准备部署。为了使用Gradle创建JAR文件,我按照here

所述的说明进行操作
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并排除其他人被添加到套餐中的好方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以从要合并到构建JAR的文件集合中排除该文件。

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