不使用bootJar使用gradle为Springboot创建一个librairie

时间:2019-04-17 14:40:17

标签: spring-boot gradle spring-boot-test

我开发了一个controllerAdvice,我想将其放入一个库中,供多个微服务使用; 由于我的库使用的是Spring注释,因此我为springboot添加了插件和依赖项。但是,当我添加

apply plugin: 'org.springframework.boot'

这在构建步骤中增加了bootJar步骤。 bootJar要求我也应该为Spring Boot提供一个我不想要的东西,因为我的jar只是一个库,而不是springboot应用程序。

这是我的gradle.build脚本的一部分:

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'


group = 'com.test'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'

repositories {
    mavenCentral()
    maven {
        url = artifactoryRepoUrl
    }
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-configuration-processor")
    compile("org.springframework.boot:spring-boot-starter-hateoas")

    testCompile('org.springframework.boot:spring-boot-starter-test')
    compileOnly('org.projectlombok:lombok:1.18.6')
    annotationProcessor('org.projectlombok:lombok:1.18.6')
}

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

听起来您将从单独使用Spring Boot的依赖管理中受益。这将管理您的依赖版本,同时使您的项目构建一个普通的jar而不是Spring Boot的胖jar。 Gradle插件的参考文档describes how to do this。第一步是依赖插件而不应用插件。如果您使用的是plugins块,则如下所示:

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

对于您来说,删除apply plugin: 'org.springframework.boot'就足够了。

您已经在应用依赖性管理插件,所以剩下的步骤是配置Boot的依赖性管理:

dependencyManagement {
    imports {
        mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
    }
}

这将允许您继续声明没有版本的依赖项。然后,您可以运行jar任务来构建适合用作依赖项的普通jar。

答案 1 :(得分:1)

您需要做的就是禁用bootJar任务并启用jar任务(这将创建普通的jar而不是可执行的jar)。在您的 build.gradle 文件中添加以下代码段:

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

来源:https://spring.io/guides/gs/multi-module/