2017-05-05 110 views
0

我想避免冗余,因此我得到了一个包含这样看起来一个“共享”项目:继承gradle这个插件子项目

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") 
} 

有没有什么办法可以让我的常规项目继承的插件模块或实际的插件呢?

回答

1

不是继承等等。在我看来,你想要做的事可以通过从根项目配置子项目来实现。基本上,在你的根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()mavenCentralrepositories块 - jCentermavenCentral超集,是首选的一个

+0

试过了,但我发现: '错误:(57,0)无法找到类型为org.gradle.api.Project的项目'core'的参数[build_44j4lgef9ftzfeyhh4janhtfy $ _run_closure3 $ _closure14 @ 65b80565]的方法插件()。“ 因此显然不能使用插件语句里面的子项目... – CryNickSystems

+0

你是对的,我已经解决了解决'plugins'目前限制的问题 – wasyl