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"
    ...
}

assembleGradleタスクを実行すると、myApp.war.originalアーカイブが取得されなくなり(以前は提供されたすべてのライブラリなしでビルドされていました)、提供された依存関係を含むアーカイブのみが取得されることに気付きました。

ここで何か不足していますか?フォルダー内のこれらの ~4MB の jar を節約したいと思い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タスクが優先されます (Gradle 3 では使用できず、Grails 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.warと) ではなく、不要なものを含めずに名前をmyApp.war.original付けた 1 つのアーカイブです。myApp.war

しかし、 Spring Boot の Gradle プラグインのドキュメントではbootWarwar.

bootRepackage タスクは、実行可能な jar および war をそれぞれビルドするための bootJar および bootWar タスクに置き換えられました。どちらのタスクも、同等の標準の Gradle jar または war タスクを拡張し、通常の構成オプションと動作のすべてにアクセスできるようにします。

ただし、Spring Boot 2.0 Migration Guideにはwar、タスクがスキップされることが予想されると記載されています。

bootRepackage タスクは、実行可能な jar および war をそれぞれビルドするための bootJar および bootWar タスクに置き換えられました。jar と war のタスクはもはや関係ありません。

繰り返しますが、私は何を見逃していますか?

4

1 に答える 1