Rod*_*aki 34 dependency-management gradle
我目前正在尝试将Maven项目迁移到Gradle
在我的Maven版本中,我的所有依赖版本都在我的父 pom中列出如下:
<properties>
<spring.version>4.2.3.RELEASE</spring.version>
<spring.boot.version>1.3.3.RELEASE</spring.boot.version>
...
</properties>
Run Code Online (Sandbox Code Playgroud)
然后我可以在任何子模块中定义这样的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我试图做同样的事情Gradle,因为我的一些模块共享依赖的版本是这样的,我不希望修改一个以上的地方,如果我想升级Spring或做类似的操作.
我得到的最接近的是:
dependencies {
ext.springVersion = '4.2.3.RELEASE'
compile "org.springframework:spring-jdbc:$springVersion"
}
Run Code Online (Sandbox Code Playgroud)
然而,这仍然不起作用.在Gradle中实现此目的的推荐方法是什么?或者Gradle对待这种方式有何不同?也许我对Maven的看法仍然太多,无法看到另一种解决方案.
请记住,对Gradle的尝试并不完全 是我想要的.我希望能够在一个单独的文件中定义依赖项,而不是直接在将使用它的文件上.
Vik*_*eva 24
以下build.gradle文件中的配置为我工作gradle version 4.5,在此发布以供将来参考 -
ext {
springVersion = '5.0.3.RELEASE'
}
dependencies {
compile "org.springframework:spring-context:$springVersion"
}
Run Code Online (Sandbox Code Playgroud)
Dim*_*sus 11
您现在可以使用更接近App Gradle Build中的依赖项,如下所示:
dependencies {
def daggerVersion = "2.24"
implementation "com.google.dagger:dagger:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
}
Run Code Online (Sandbox Code Playgroud)
您提供依赖项版本的方式是正确的,应该可行.IntelliJ Idea在gradle构建脚本中的变量存在一些问题,因此您不必依赖它,只需尝试运行构建和检出,是否已下载依赖项并且您的项目是否正确构建.
如果您希望将项目依赖项存储在单独的文件中,那么最常见的方法是在根build.script中定义它们,通过subprojects所有子项目的闭包来定义,或者allprojects如果您希望为所有项目指定依赖项,则包括根.这将是这样的:
subprojects{
dependencies{
compile ...
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以在根构建脚本中为子项目提供任何常见配置.阅读用户指南
或者,您可以在根构建脚本中声明变量,将其初始化为具有所需所有依赖项规范的映射,或者将其初始化为具有单个依赖项列表的数组,并在子项目中使用此变量(如果需要).在根中有这样的事情:
ext.commomLibs = [
'testlibs' : 'junit:junit:4.8'
]
Run Code Online (Sandbox Code Playgroud)
注意,您可以将map的值定义为lib规范的数组,以使其指向所有这些依赖项.然后您可以在子项目中使用它:
dependencies{
testCompile commomLibs.testlibs
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用具有依赖关系的单独构建脚本,并将其应用于您需要的构建脚本,如此
apply from: 'dependencies.script'
Run Code Online (Sandbox Code Playgroud)
然后,您可以将依赖项放入依赖项脚本中,然后将其应用于需要此依赖项和/或可能是某些常见逻辑的任何其他构建脚本中.
使用双引号对我有用。
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
hazelCastVersion = '3.10.4'
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
dependencies {
compile('org.springframework.cloud:spring-cloud-starter-config')
compile "com.hazelcast:hazelcast-spring:${hazelCastVersion}"
compile group: 'com.hazelcast', name: 'hazelcast', version: "${hazelCastVersion}" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19265 次 |
| 最近记录: |