3

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

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

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插件,但我注意到 task 启动的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。不再涉及罐子和战争任务。

再说一次,我错过了什么?

4

1 回答 1

0

您应该使用插件provided中的providedCompileorprovidedRuntime依赖配置替换。war

这两个配置与各自的编译和运行时配置具有相同的范围,只是它们没有添加到 WAR 存档中。

参考:

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

于 2019-12-13T14:49:41.080 回答