我想避免冗余,因此我得到了一个“共享”项目,其中包含如下内容:
plugins {
id "org.flywaydb.flyway" version "4.2.0"
}
repositories {
mavenCentral()
jcenter()
}
apply plugin: "java"
dependencies {
compile "commons-io:commons-io:2.4"
// ...
}
然后我也有我的常规项目,它们从我的共享项目继承编译依赖项,如下所示:
apply plugin: "java"
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile project(":shared")
testCompile project(":shared")
}
有什么方法可以让我的常规项目也继承插件块或实际插件吗?
不是继承。在我看来,您想要做的事情可以通过从根项目配置子项目来实现。基本上在你的根
build.gradle
(将配置你的根项目的脚本)中你可以写:
subprojects {
// configuration
}
您可能可以删除共享项目并将其放在根项目的
build.gradle
中:
plugins {
id "org.flywaydb.flyway" version "4.2.0" apply false
}
subprojects {
repositories {
mavenCentral()
jcenter()
}
apply plugin: "java"
apply plugin: "org.flywaydb.flyway"
dependencies {
compile "commons-io:commons-io:2.4"
// ...
}
}
这样,您的所有子项目都将使用相同的闭包进行配置 - 这相当于将
subprojects
块中的所有内容复制粘贴到各个子项目的 build.gradle
文件中。与最初的解决方案相比,优点是还能够应用插件、配置扩展,以及您通常可以执行的所有操作。
顺便说一句,您不需要在
jcenter()
块中同时使用 mavenCentral
和 repositories
- jCenter
是 mavenCentral
的超集,并且是首选