使用Gradle从war中删除/删除文件

时间:2015-08-06 13:36:03

标签: gradle spring-boot

我正在使用gradle构建一个Spring Boot应用程序,我希望将application.properties文件从战争中删除,因为它将在外部加载(这是在tomcat容器中运行,而不是嵌入式)。

我查看了StackOverflow和Gradle文档以试图弄清楚要做什么,但我不知道要绑定哪个阶段,以及我是否在创建战争之前或之后排除了该文件。似乎还有多种处理文件的方法。

我相信Maven使用packagingExcludes作为等价物。

2 个答案:

答案 0 :(得分:1)

您还可以选择,如果您不关心将这些属性文件从 src/main/resources 复制到 build/resources/main 文件夹(不仅仅是在将 build/resources/main 复制到战争),你可以使用:

在 build.gradle 文件中;

processResources {
    exclude('application.properties')
}

答案 1 :(得分:0)

虽然我无法阻止文件被添加到战争中,但我可以在创建战争后删除文件 - 部分原因是这个问题的提示:Is there a quick way to delete a file from a Jar / war without having to extract the jar and recreate it?

在我的build.gradle文件中,我使用war命令附加exec命令,以便在创建war文件后运行命令。该命令将从战争中删除application.properties文件。这就是任务扩展的样子:

war << {
    exec {
        workingDir 'build/libs'
        commandLine 'zip', '-d', "${appName}-${appVersion}.war", 'WEB-INF/classes/application.properties'
    }
}

简而言之,它将工作目录更改为gradle放置战争的位置,然后使用zip命令从战争中删除文件。