我正在尝试将我的maven项目迁移到gradle。我在变量 springVersion 中为所有项目指定了spring版本。但是由于某种原因,构建失败了一个特定的依赖 org.springframework:spring-web:springVersion 。当我直接输入版本 org.springframework:spring-web:3.1.2.RELEASE 时,所有内容都会编译。这是我的build.gradle文件:
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
ext {
springVersion = "3.1.2.RELEASE"
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework:spring-context:springVersion'
compile 'org.springframework:spring-web:springVersion'
compile 'org.springframework:spring-core:springVersion'
compile 'org.springframework:spring-beans:springVersion'
testCompile 'org.springframework:spring-test:3.1.2.RELEASE'
testCompile 'org.slf4j:slf4j-log4j12:1.6.6'
testCompile 'junit:junit:4.10'
}
version = '1.0'
jar {
manifest.attributes provider: 'gradle'
}
}
错误消息:
* What went wrong:
Could not resolve all dependencies for configuration ':hi-db:compile'.
> Could not find group:org.springframework, module:spring-web, version:springVersion.
Required by:
hedgehog-investigator-project:hi-db:1.0
org.springframework:spring-test:3.1.2.RELEASE在执行测试时也是如此。
是什么导致他的问题以及如何解决?
答案 0 :(得分:28)
您使用springVersion
作为版本,字面上。声明依赖项的正确方法是:
// notice the double quotes and dollar sign
compile "org.springframework:spring-context:$springVersion"
这是使用Groovy字符串插值,这是Groovy的双引号字符串的一个显着特征。或者,如果您想以Java方式执行此操作:
// could use single-quoted strings here
compile("org.springframework:spring-context:" + springVersion)
我不推荐后者,但希望有助于解释为什么你的代码不起作用。
答案 1 :(得分:3)
或者您可以通过dependencies
中的变量定义lib版本,如下所示:
dependencies {
def tomcatVersion = '7.0.57'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
}
}