gradle spring boot project:如何在战争中重命名文件?

时间:2018-09-05 11:50:18

标签: spring-boot gradle

我正在使用Spring Boot构建一个Web应用程序。 我想在最后更改一些WEB-INF / lib / *。jars的名称。

如果我正确理解了文档,则应该使用spring-boot-gradle-plugin提供的bootWar任务(标准战争任务的子类)的“重命名”方法来工作。

但是,根本不会执行“重命名”方法,即,如果我将其添加到build.gradle中:

   bootWar {
      rename { name ->
        println "***** " + name
        name
    }

然后什么也不会打印。采用原始模式和替换模式的“重命名”方法重载也不起作用。

我在一个示例项目中进行了尝试,但在那儿也不起作用:

  • 使用具有“ Web”依赖项的Spring Initializr来创建新项目
  • apply plugin: 'java'更改为apply plugin: 'war'
  • 从上方添加bootWar配置

1 个答案:

答案 0 :(得分:2)

您需要在rename上调用bootWar.rootSpec方法,如下所示:

bootWar {
    rootSpec.rename { name ->
        println "***** " + name
        name
    }
}

然后,您将可以重命名所需的库:

> Task :bootWar
***** MANIFEST.MF   
***** spring-boot-starter-web-2.0.4.RELEASE.jar 
***** spring-boot-starter-aop-2.0.4.RELEASE.jar 
***** spring-boot-starter-2.0.4.RELEASE.jar
( ...)

我不知道其原因,但是rename任务的War闭包将仅应用于位于项目src/main/webapp目录下的资源,而不应用于其他资源(例如依赖项)。您可以通过创建虚拟资源src/main/webapp/foo.txt并执行测试脚本来确认这一点:

$ ./gradlew bootWar

> Task :bootWar
***** foo.txt