如何使用 Spring Boot Gradle 插件 2.1.* 构建不可执行的 jar(库)

How to build not executable jar (library) with Spring Boot Gradle Plugin 2.1.*

我正在尝试建立一个图书馆。我的 build.gradle 文件中有 Spring Boot Gradle 插件:

plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
}

我的图书馆没有主class。为了防止 'Main class not configured ...' 错误,我添加到 build.gradle:

bootRepackage {
enabled = false
}

但出现错误:

A problem occurred evaluating root project 'mysuperlibrary'.

Could not find method bootRepackage() for arguments [build_3886uiniuyuorta9lpa9n4f5c$_run_closure3@1975ec48] on root project 'mysuperlibrary' of type org.gradle.api.Project.

在 Spring 引导 Gradle 插件 1.5.16 上一切正常,但不适用于 2.1.3。

更新:我使用这个插件是因为没有它我无法解析 testCompile 'org.springframework.boot:spring-boot-starter-test' 。当我删除插件时,我可以为测试构建项目位依赖性消失。

更新:

去掉插件直接添加测试依赖即可。例如。使用 JUnit 5:

dependencies {
      testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.1'
      ....
      testImplementation(
            "org.junit.jupiter:junit-jupiter-api:$jUnitVersion",
            "org.junit.jupiter:junit-jupiter-params:$jUnitVersion"
      )
      testRuntimeOnly(
              "org.junit.jupiter:junit-jupiter-engine:$jUnitVersion"
      )
      test {
          useJUnitPlatform()
      }
}

旧版(适用于多模块项目): 您可以使用应用标志:

plugins {
   id 'org.springframework.boot' version '2.1.3.RELEASE' apply: false
}

并写一个函数

def isAbstract(project) {
    return ['mysuperlibrary'].contains(project.name)
}

subprojects { project ->
    if (isAbstract(project) {
        return
    }

    apply plugin: 'org.springframework.boot'

}

现在我在我所有的库中使用 2.1.* 版本的 spring 插件。 'dependencies' section前需要添加next:

bootJar {
    enabled = false
}

jar {
    enabled = true
}

可能是这样的:

tasks {
    bootJar { mainClassName = "NONE" }
}