web-dev-qa-db-ja.com

実行可能なjarのないSpring Boot 2 Gradleプラグイン

Spring Boot Gradleプラグイン2を設定して、Gradle Script KotlinのBootディストリビューションを無効にする方法を教えてください。

私が欲しいディストリビューションは、libフォルダーにすべての依存関係(およびjar)を含むアセンブリバンドルZipです。

Jarタスクを有効にし、bootJarタスクを無効にしました。

ビルドファイルの現在のソース https://github.com/Skatteetaten/mokey/blob/825a81f20c21a2220876a09ebf7f01fe7c61f2fd/build.gradle.kts

Aurora skatteetaten gradleプラグインが配布メカニズムを追加することに注意してください。 https://github.com/Skatteetaten/aurora-gradle-plugin

8
bjartek

アプリケーションプラグインが設定されると、Spring Bootはアプリケーションパッケージをファットjarとして含む追加のディストリビューションを作成します。デフォルトのディストリビューションはそのままで、Bootのディストリビューションを無効にすることなく使用できます。

デフォルトの配布は、標準のjarタスクに依存しています。代わりにbootJarによって生成されたファットjarを使用することを想定しているため、このタスクはデフォルトでSpring Bootプラグインによって無効にされています。そうでない場合は、次のようにjarを再度有効にできます。

jar {
    enabled = true
}

この変更を適用すると、distZipタスクを実行できます。

$: ./gradlew clean distZip --console=plain
:clean
:bootBuildInfo
:compileJava
:processResources
:classes
:jar
:startScripts
:distZip

BUILD SUCCESSFUL in 1s
7 actionable tasks: 7 executed

配布のlibディレクトリに、アプリケーションとそのすべての依存関係を個別のjarとしてパッケージ化するZipを作成します。

$: unzip -l build/distributions/application-distribution-0.0.1-SNAPSHOT.Zip
Archive:  build/distributions/application-distribution-0.0.1-SNAPSHOT.Zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/
        0  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/lib/
     1860  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/lib/application-distribution-0.0.1-SNAPSHOT.jar
      588  03-01-2018 05:24   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-starter-web-2.0.0.RELEASE.jar
      645  03-01-2018 05:24   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-starter-json-2.0.0.RELEASE.jar
      592  03-01-2018 05:23   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-starter-2.0.0.RELEASE.jar
      590  03-01-2018 05:24   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-starter-Tomcat-2.0.0.RELEASE.jar
  1117582  01-08-2018 11:43   application-distribution-0.0.1-SNAPSHOT/lib/hibernate-validator-6.0.7.Final.jar
   782155  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-webmvc-5.0.4.RELEASE.jar
  1244848  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-web-5.0.4.RELEASE.jar
  1145432  03-01-2018 05:23   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-autoconfigure-2.0.0.RELEASE.jar
   922427  03-01-2018 05:23   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-2.0.0.RELEASE.jar
      613  03-01-2018 05:23   application-distribution-0.0.1-SNAPSHOT/lib/spring-boot-starter-logging-2.0.0.RELEASE.jar
    26586  03-01-2018 05:23   application-distribution-0.0.1-SNAPSHOT/lib/javax.annotation-api-1.3.2.jar
  1079064  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-context-5.0.4.RELEASE.jar
   360034  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-aop-5.0.4.RELEASE.jar
   654022  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-beans-5.0.4.RELEASE.jar
   263410  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-expression-5.0.4.RELEASE.jar
  1216414  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-core-5.0.4.RELEASE.jar
   297518  10-24-2017 03:28   application-distribution-0.0.1-SNAPSHOT/lib/snakeyaml-1.19.jar
    33391  01-30-2018 09:16   application-distribution-0.0.1-SNAPSHOT/lib/jackson-datatype-jdk8-2.9.4.jar
    98261  01-30-2018 09:16   application-distribution-0.0.1-SNAPSHOT/lib/jackson-datatype-jsr310-2.9.4.jar
     8643  01-30-2018 09:16   application-distribution-0.0.1-SNAPSHOT/lib/jackson-module-parameter-names-2.9.4.jar
  1345154  01-30-2018 09:16   application-distribution-0.0.1-SNAPSHOT/lib/jackson-databind-2.9.4.jar
   257309  02-14-2018 08:07   application-distribution-0.0.1-SNAPSHOT/lib/Tomcat-embed-websocket-8.5.28.jar
  3109223  02-14-2018 08:07   application-distribution-0.0.1-SNAPSHOT/lib/Tomcat-embed-core-8.5.28.jar
   240498  02-14-2018 08:07   application-distribution-0.0.1-SNAPSHOT/lib/Tomcat-embed-el-8.5.28.jar
    93107  01-08-2018 11:43   application-distribution-0.0.1-SNAPSHOT/lib/validation-api-2.0.1.Final.jar
    66469  02-20-2018 12:53   application-distribution-0.0.1-SNAPSHOT/lib/jboss-logging-3.3.2.Final.jar
    65100  09-19-2017 07:31   application-distribution-0.0.1-SNAPSHOT/lib/classmate-1.3.4.jar
   290339  06-16-2017 04:40   application-distribution-0.0.1-SNAPSHOT/lib/logback-classic-1.2.3.jar
    17519  11-28-2017 08:42   application-distribution-0.0.1-SNAPSHOT/lib/log4j-to-slf4j-2.10.0.jar
     4596  03-27-2017 12:22   application-distribution-0.0.1-SNAPSHOT/lib/jul-to-slf4j-1.7.25.jar
    15836  02-19-2018 10:08   application-distribution-0.0.1-SNAPSHOT/lib/spring-jcl-5.0.4.RELEASE.jar
    66519  08-03-2017 05:28   application-distribution-0.0.1-SNAPSHOT/lib/jackson-annotations-2.9.0.jar
   320923  01-30-2018 09:16   application-distribution-0.0.1-SNAPSHOT/lib/jackson-core-2.9.4.jar
   471901  06-16-2017 04:40   application-distribution-0.0.1-SNAPSHOT/lib/logback-core-1.2.3.jar
    41203  03-27-2017 12:22   application-distribution-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.25.jar
   255485  11-28-2017 08:42   application-distribution-0.0.1-SNAPSHOT/lib/log4j-api-2.10.0.jar
        0  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/bin/
     7002  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/bin/application-distribution
     4042  03-19-2018 07:31   application-distribution-0.0.1-SNAPSHOT/bin/application-distribution.bat
---------                     -------
 15926900                     42 files
8
Andy Wilkinson

Spring-Boot 2では、gradleプラグインがビルドを再構成して、アプリケーションとmavenプラグインを適用するときに、uploadArchivesタスクにブートtarおよびZipディストリビューションを含めます。

あなたの質問から私が知ることができることから、アプリケーションプラグインが作成するものと同様に、すべてのjarファイルが含まれた単一のZipファイルが必要ですが、Spring Bootプラグインが追加する「余分な」すべてを除外したいですか?その場合は、gradleに正確にそれを実行するように指示するだけです。

apply plugin: 'application'
apply plugin: 'maven'

jar.enabled = true
[bootJar, distTar, bootDistTar, bootDistZip]*.enabled = false
configurations.archives.artifacts.removeIf { !it.archiveTask.is(distZip) }

これはかっこいいですが、うまくいけば、kotlinファイルで同様の方法でこれを適用できます。

5

この@panser回答のkotlin DSLバージョンは私にとってはうまくいきます(spring-boot bootJarタスクを無効にし、jarタスクを有効にします):

import org.springframework.boot.gradle.tasks.bundling.BootJar

tasks.getByName<BootJar>("bootJar") {
    enabled = false
}

tasks.getByName<Jar>("jar") {
    enabled = true
}
2
ThomasEdwin

これは私のために働きます(spring-boot bootJarタスクを無効にし、jarを有効にします)

apply plugin: 'Java'
bootJar {
  enabled = false
}
1
panser

春ブーツ2.x

私のプロジェクトはマルチモジュールで、各モジュールはjarを実行できます

ルートbuild.gradle

subprojects{
  apply plugin: 'idea'
  apply plugin: 'Java'
  apply plugin: 'org.springframework.boot'  
  }

 bootJar { enabled = true }
 jar {enabled = true} 
}

サブモジュールbuild.gradle

bootJar {
    mainClassName = 'space.hi.HelloApplication'
}

次に、アイデアグラドルプラグインの「タスク/アプリケーションまたはビルド」でbootRunサブモジュールをクリックするか、またはbootJarをクリックしてjarを生成します。

0
byte mamba