Spring Gradle 多模块项目的平台 bom
Spring platform bom for Gradle multi-module project
我有一个多模块 gradle 项目。
Root有以下模块:core,app(依赖core),web(依赖app,core)
来自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
在 root 命令提示符下,核心 jar 已成功构建,但应用 无法 解析依赖项的版本。
common.gradle在根目录
repositories {
mavenCentral()
maven { url "http://repo.grails.org/grails/repo/" }
// mavenLocal()
}
build.gradle 核心
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”的所有依赖项。
Could not find org.hibernate:hibernate-validator:.
Searched in the following locations:
https://repo1.maven.org/maven2/org/hibernate/hibernate-validator//hibernate-validator-.pom
https://repo1.maven.org/maven2/org/hibernate/hibernate-validator//hibernate-validator-.jar
http://repo.grails.org/grails/repo/org/hibernate/hibernate-validator//hibernate-validator-.pom
http://repo.grails.org/grails/repo/org/hibernate/hibernate-validator//hibernate-validator-.jar
Required by:
Root:app:unspecified
环境:
D:\个人>gradle -v
Gradle2.9
构建时间:2015-11-17 07:02:17 UTC
内部版本号:none
修订版:b463d7980c40d44c4657dc80025275b84a29e31f
Groovy: 2.4.4
Ant:2013 年 12 月 23 日编译的 Apache Ant(TM) 版本 1.9.3
JVM:1.8.0_20(甲骨文公司 25.20-b23)
OS: Windows 7 6.1 amd64
您应该将依赖管理插件添加到应用程序模块中。目前它仅在核心模块中可用,但您正在尝试在应用程序模块中使用它的功能。
将插件应用于每个模块可能是个好主意。如果你愿意,你可以将它添加到你的根 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'
}
我有一个多模块 gradle 项目。
Root有以下模块:core,app(依赖core),web(依赖app,core)
来自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
在 root 命令提示符下,核心 jar 已成功构建,但应用 无法 解析依赖项的版本。
common.gradle在根目录
repositories {
mavenCentral()
maven { url "http://repo.grails.org/grails/repo/" }
// mavenLocal()
}
build.gradle 核心
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”的所有依赖项。
Could not find org.hibernate:hibernate-validator:. Searched in the following locations: https://repo1.maven.org/maven2/org/hibernate/hibernate-validator//hibernate-validator-.pom https://repo1.maven.org/maven2/org/hibernate/hibernate-validator//hibernate-validator-.jar http://repo.grails.org/grails/repo/org/hibernate/hibernate-validator//hibernate-validator-.pom http://repo.grails.org/grails/repo/org/hibernate/hibernate-validator//hibernate-validator-.jar Required by: Root:app:unspecified
环境:
D:\个人>gradle -v
Gradle2.9
构建时间:2015-11-17 07:02:17 UTC 内部版本号:none 修订版:b463d7980c40d44c4657dc80025275b84a29e31f
Groovy: 2.4.4
Ant:2013 年 12 月 23 日编译的 Apache Ant(TM) 版本 1.9.3
JVM:1.8.0_20(甲骨文公司 25.20-b23)
OS: Windows 7 6.1 amd64
您应该将依赖管理插件添加到应用程序模块中。目前它仅在核心模块中可用,但您正在尝试在应用程序模块中使用它的功能。
将插件应用于每个模块可能是个好主意。如果你愿意,你可以将它添加到你的根 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'
}