Создать библиотеку для Springboot, используя gradle, не делая bootJar - PullRequest
1 голос
/ 17 апреля 2019

Я разработал совет контроллера, который я хочу поместить в библиотеку, которая будет использоваться несколькими микросервисами; Поскольку моя библиотека использует аннотации Spring, я добавляю плагины и зависимости для Springboot. Однако, когда я добавляю

apply plugin: 'org.springframework.boot'

это добавляет мне шаг bootJar на этапе сборки. BootJar требует, чтобы у меня был основной класс для весенней загрузки, чего я тоже не хочу, так как мой 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')
}

как я могу решить эту проблему?

1 Ответ

1 голос
/ 17 апреля 2019

Похоже, вы бы выиграли от использования управления зависимостями Spring Boot в изоляции. Это позаботится об управлении версиями зависимостей, в то время как ваш проект создаст обычный jar, а не толстый jar Spring Boot. Справочная документация плагина Gradle описывает, как это сделать . Этот первый шаг должен зависеть от плагина без его применения. Если вы используете блок 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-файл, подходящий для использования в качестве зависимости.

...