2014-12-16 4 views
4

наша весна-Загрузочный проект выглядит следующим образомSpring загрузки нескольких модулей Gradle Build - Multiple "Fat баночки"

project 
|__ build.gradle 
|__ settings.gradle 
    |__ module_a 
    |__ module_b 
    |__ ... 
|__ module_a 
|__ module_b 

module_a содержит только класс SpringApplication и файл application.properties

Запуск ./ Конструкция gradlew прекрасно работает, но проблема в том, что для каждого модуля (около 10) градиль генерирует жировую флягу, включающую все зависимости.

Мы хотим только один дальнюю баночка (в модуле а)

buildscript { 
    ext { 
     springBootVersion = '1.2.0.RELEASE' 
     springLoadedVersion = '1.2.0.RELEASE' 
    } 
    repositories { 
     // NOTE: You should declare only repositories that you need here 
     mavenCentral() 
     maven { url "http://repo.spring.io/release" } 
     maven { url "http://repo.spring.io/milestone" } 
     maven { url "http://repo.spring.io/snapshot" } 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
     classpath("org.springframework:springloaded:${springLoadedVersion}") 
    } 
} 


allprojects { 

    group = "example.group" 
    version = "0.0.1" 

    repositories() { 
     mavenCentral() 
    } 

} 


subprojects { 

    apply plugin: "groovy" 
    apply plugin: "eclipse" 

    eclipse { 
     classpath { 
      containers.remove("org.eclipse.jdt.launching.JRE_CONTAINER") 
      containers "org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8" 
     } 
    } 

    apply plugin: "idea" 
    apply plugin: "java" 
    apply plugin: "spring-boot" 

    mainClassName = "MainClassName" 

    sourceCompatibility = 1.8 
    targetCompatibility = 1.8 

    dependencies { 
    } 
} 

task wrapper(type: Wrapper) { gradleVersion = '2.2' } 

Мы пытались добавить опции jar.enabled = ложь bootRepackage.enabled = ложь

в разделе подпроектов, но после этого проект больше не будет компилироваться.

ответ

5

Вместо применения Spring загрузки плагина для каждого суб-проекта, вы могли бы применить его только к module_a:

project(':module_a') { 
    apply plugin: 'org.springframework.boot' 
} 
+0

Мой коллега сказал мне, что он уже попробовал этот подход, но проблема состоит в том, что автоматическое разрешение версии больше не работает. Поэтому вместо написания компиляции («org.springframework.boot: spring-boot-starter-web») ему пришлось написать компиляцию («org.springframework.boot: spring-boot-starter-web: 1.2.0.RELEASE») , Но я попробую еще раз и предоставит обратную связь – tplacht

+0

Ваш коллега прав: автоматическое разрешение версии не будет работать с этим подходом. Если вам требуется автоматическое разрешение версии, вы оказались на правильных строках с отключением переупаковки, но я не думаю, что вам нужно также отключить банку. –

+1

Добавление «bootRepackage.enabled = false» ко всем нашим подмодулям, сработавшим для нас. Я принял ваш ответ, потому что это тоже отлично работает, если вы не полагаетесь на автоматическое разрешение версии. благодаря – tplacht

Смежные вопросы