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"
...
}
assemble
Gradleタスクを実行すると、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 プラグインのドキュメントではbootWar
、war
.
bootRepackage タスクは、実行可能な jar および war をそれぞれビルドするための bootJar および bootWar タスクに置き換えられました。どちらのタスクも、同等の標準の Gradle jar または war タスクを拡張し、通常の構成オプションと動作のすべてにアクセスできるようにします。
ただし、Spring Boot 2.0 Migration Guideにはwar
、タスクがスキップされることが予想されると記載されています。
bootRepackage タスクは、実行可能な jar および war をそれぞれビルドするための bootJar および bootWar タスクに置き換えられました。jar と war のタスクはもはや関係ありません。
繰り返しますが、私は何を見逃していますか?