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

时间:2019-09-03 11:56:41

标签: java spring-boot gradle build.gradle spring-boot-gradle-plugin

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

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

我的图书馆没有主班。为了防止出现“未配置主类...”错误,我将其添加到build.gradle中:

bootRepackage {
enabled = false
}

但出现错误:

  

评估根项目“ mysuperlibrary”时出现问题。

     
    

在根目录上找不到参数[build_3886uiniuyuorta9lpa9n4f5c $ _run_closure3 @ 1975ec48]的方法bootRepackage()     org.gradle.api.Project类型的项目“ mysuperlibrary”。

  

在Spring boot Gradle Plugin 1.5.16上一切正常,但在2.1.3下不起作用。

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

3 个答案:

答案 0 :(得分:1)

更新:

只需删除插件并直接添加测试依赖项即可。例如。使用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()
      }
}

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

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'

}

答案 1 :(得分:1)

现在我在所有库中都使用2.1。*版本的spring插件。有必要在“依赖项”部分之前添加下一个:

bootJar {
    enabled = false
}

jar {
    enabled = true
}

答案 2 :(得分:0)

可能是这样的:

tasks {
    bootJar { mainClassName = "NONE" }
}