我在一个具有多个grails服务,插件和库的项目上工作,所有这些都使用gradle构建,并且它们的依赖项在 Form2 f2 = new Form2();
f2.Show();
this.Close();
文件中声明,每个项目一个,这很有意义。我希望。
在maven中,我曾经能够在一个父项目pom或pom模板中声明所有依赖项的版本,并且仅在需要它们的项目中包含这些依赖项而没有版本。这样一来,就可以轻松升级依赖关系。有没有简单的方法可以做到这一点?
伪代码示例:
build.gradle
dependencies {
joda-time:joda-time:2.9.1
cglib:cglib:3.2.9
javax.servlet:javax.servlet-api:3.1.0
}
parent: master_template
dependencies {
joda-time:joda-time
javax.servlet:javax.servlet-api
}
答案 0 :(得分:3)
您可以像创建带有父pom的maven一样创建‘Try this API’。
为了管理父级中的依赖项,我使用了multi module project。
您的父母build.gradle
如下所示:
subprojects {
apply plugin: "io.spring.dependency-management"
sourceCompatibility = 1.8
targetCompatibility = 1.8
check.dependsOn dependencyCheckAggregate
repositories {
mavenLocal()
jcenter()
// other repos
}
dependencyManagement {
def jacksonVersion = "2.+"
dependencies {
dependency "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
dependency "com.fasterxml.jackson.core:jackson-core:$jacksonVersion"
dependency "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
dependency "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$jacksonVersion"
dependency "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:$jacksonVersion"
}
}
}
现在,您可以将依赖项添加到子模块中,而无需指定版本。
答案 1 :(得分:0)
通过使用Gradle的默认apply from: 'other.gradle'
,您可以轻松实现所需的目标,因此不需要其他插件。
在我的微服务项目中,我正在使用类似的东西:
common-gradle / env.gradle
apply plugin:'groovy'
ext.compile = [ 'joda-time:joda-time:2.9.1', 'cglib:cglib:3.2.9` ]
ext.testCompile = [ 'org.spockframework:spock-core:1.3-groovy-2.5' ]
common-gradle / dependencies.gradle
dependencies {
compile ext.compile
testCompile ext.testCompile
}
以及用法
service_a / build.gradle
apply from:'../common-gradle/env.gradle'
ext.compile << 'ch.qos.logback:logback-classic:1.2.3'
apply from:'../common-gradle/dependencies.gradle'
因此,我的每个build.gradle
文件仅包含3-5行关键信息,例如项目名称和版本。
您不需要将common-gradle
作为项目导入IDE,只需使用符号链接即可避免使用外部引用。同样,在类似Jenkins的管道上构建期间,您唯一要做的就是将common-gradle
存储库检出到工作目录中。