Пружинная платформа-бомба для многомодульного проекта Gradle

У меня есть проект с несколькими модулями.

Root имеет следующие модули: ядро, приложение (зависит от ядра), веб (зависит от приложения, ядра).

Из https://plugins.gradle.org/plugin/io.spring.dependency-management

я использовал

 plugins {  id "io.spring.dependency-management" version "0.5.4.RELEASE" }

 dependencyManagement {
  imports { 
     mavenBom 'io.spring.platform:platform-bom:+' // 2.0.1.RELEASE
   }
  }

внутри build.gradle ядра.

Когда я сработал

 gradle clean build

из корневой командной строки ядро ​​jar было создано успешно, но приложению не удалось разрешить версии зависимостей.

common.gradle в корневом каталоге

repositories {
    mavenCentral()
    maven { url "http://repo.grails.org/grails/repo/" }
    // mavenLocal()
}

build.gradle Core

plugins {
   id "io.spring.dependency-management" version "0.5.4.RELEASE"
}

apply from: '../common.gradle'
apply plugin: 'java'

dependencyManagement {
   imports {
    mavenBom 'io.spring.platform:platform-bom:+' // 2.0.1.RELEASE
    }
 }

dependencies {
  compile  'javax.jms:javax.jms-api:+' //2.0
  compile  'javax.mail:mail:+' //1.4.6
  compile  'javax.validation:validation-api' //1.0.0.GA
  compile  'org.springframework.security:spring-security-ldap' //4.0.1.RELEASE
  compile  'org.springframework.data:spring-data-jpa'  //1.9.1.RELEASE
  compile 'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:+' //1.0.0.Final    
 }

build.gradle для модуля приложения

apply plugin: 'java'
apply from: '../common.gradle'
dependencies {
compile project(':Core')
compile 'org.hibernate:hibernate-validator' //5.1.1.Final
compile 'net.sf.ehcache:ehcache'   //2.9.1
compile 'org.springframework:spring-jms' //4.2.3.RELEASE
 compile 'org.springframework:spring-oxm' //3.0.4.RELEASE }

Фрагмент сообщения об ошибке:

ОШИБКА: сбой при сборке за исключением.

  • Что пошло не так: не удалось разрешить все зависимости для конфигурации ": app: compile".
    # P13 #

Окружающая среда:

D: \ личное> градиент -v


Gradle 2.9

Время сборки: 17.11.2015, 07:02:17 UTC Номер сборки: нет Ревизия: b463d7980c40d44c4657dc80025275b84a29e31f

Groovy: 2.4.4

Ant: Apache Ant (TM) версии 1.9.3, скомпилированный 23 декабря 2013 г.

JVM: 1.8.0_20 (Oracle Corporation 25.20-b23)

ОС: Windows 7 6.1 amd64


person lab bhattacharjee    schedule 24.01.2016    source источник


Ответы (1)


Вы должны добавить плагин управления зависимостями в модуль приложения. Сейчас он доступен только в основном модуле, но вы пытаетесь использовать его функции в модуле приложения.
Вероятно, неплохо применить плагин к каждому модулю. Если хотите, можете добавить это в свой корневой build.gradle:

buildscript {
    repositories { mavenCentral() }
    dependencies { classpath "io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE" }
}

allprojects {
    apply plugin: "io.spring.dependency-management"
}

Ответ на комментарий:
Для артефактов требуется явная версия, если они не являются частью platform-bom. Вы можете объявить свои собственные зависимости и использовать их без явной версии:

dependencyManagement {
     dependencies {
          dependency 'org.springframework:spring-core:4.0.3.RELEASE'
          dependency group:'commons-logging', name:'commons-logging', version:'1.1.2'
     }
}

dependencies {
     compile 'org.springframework:spring-core'
}

источник: документация плагина

person Cyril    schedule 24.01.2016
comment
Большое спасибо за ваш ответ. Один вопрос: почему Gradle запрашивает явную версию для некоторых артефактов, таких как org.hibernate.javax.persistence: hibernate-jpa-2.0-api, javax.mail: mail и т. Д.? - person lab bhattacharjee; 24.01.2016