Grails 4 - Gradle 'assemble' 任务未生成 .war.original archive



我刚刚将我的Grails web应用程序从3.2版本升级到4.0版本。

我在build.gradle(相当常见的配置(中有一个provided依赖项:

dependencies {
...
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
compile "org.springframework.boot:spring-boot-starter-actuator"
provided "org.springframework.boot:spring-boot-starter-tomcat"
...
}

我刚刚注意到,通过执行 Gradleassemble任务,我不再获得myApp.war.original存档(过去是在没有所有提供的库的情况下构建的(,而只是包含提供的依赖项的存档。

我在这里错过了什么吗?我真的很想把那些~4MB的罐子放在lib-provided文件夹中。 提前感谢!


更新 1

按照@ck1的建议,我将provided依赖项更改为providedCompile,但结果是一样的。 虽然我已经使用了war插件,但我注意到assemble任务启动的任务顺序是:

> Task :assetCompile
Finished Precompiling Assets
> Task :compileJava
> Task :compileGroovy
> Task :buildProperties
> Task :processResources
> Task :classes
> Task :compileWebappGroovyPages NO-SOURCE
> Task :compileGroovyPages
> Task :compileGsonViews
> Task :findMainClass
> Task :bootWar
> Task :war SKIPPED
> Task :assemble

因此,跳过war任务,转而使用新的bootWar任务(在Grails 3使用的Gradle 3中不可用(。 有什么办法可以强迫它吗?还是插件应该已经支持的东西?


更新 2

经过一番研究,我补充了build.gradle

war {
enabled = true
}

并且能够执行war任务:

> Task :assetCompile
Finished Precompiling Assets
> Task :compileJava
> Task :compileGroovy
> Task :buildProperties
> Task :processResources
> Task :classes
> Task :compileWebappGroovyPages NO-SOURCE
> Task :compileGroovyPages
> Task :compileGsonViews
> Task :findMainClass
> Task :bootWar
> Task :war           // not skipped
> Task :assemble

我基本上到达了我想要的地方,即获得一个没有所有提供的依赖项的.war存档;与以前不同的是,不是一对.war存档(myApp.warmyApp.war.original(,而是一个名为myApp.war的档案,不包括不需要的东西。

但我仍然很困惑,因为 Spring Boot 的 Gradle 插件文档指出bootWarwar的扩展。

bootRepackage 任务已替换为 bootJar 和 bootWar 任务,分别用于构建可执行 jar 和 war。这两个任务都扩展了其等效的标准 Gradle jar 或 war 任务,使您可以访问所有常用的配置选项和行为。

但随后 Spring Boot 2.0 迁移指南指出war任务预计将被跳过:

bootRepackage 任务已替换为 bootJar 和 bootWar 任务,分别用于构建可执行 jar 和 war。罐子和战争任务不再涉及。

那么,我又错过了什么?

您应该将provided替换为war插件中的providedCompileprovidedRuntime依赖项配置。

这两种配置与各自的编译具有相同的范围 和运行时配置,但它们未添加到 WAR 中 档案。

参考:

https://docs.gradle.org/4.10.2/userguide/war_plugin.html

最新更新