针对特定子项目的主项目中的Gradle排除插件

nfu*_*ion 20 java android gradle build.gradle

我正在开发一个包含许多子项目的大型项目,这些子项目都是用gradle构建的.通常所有项目都是java项目,因此在主build.gradle脚本中

allprojects {
    apply plugin: 'java'
}
Run Code Online (Sandbox Code Playgroud)

为所有项目指定.

但是,我需要为某个项目子树删除插件,或者从插件中明确地排除项目.

下面是对项目布局的概述

+ Main
+-- javaApplications
+-- javaLibs
+-- Android
+-----AndroidApps
+-----AndroidLibs
Run Code Online (Sandbox Code Playgroud)

Android/*不需要java插件.实现这一目标的最佳解决方案是什么?注意:我无法更改项目结构.

Opa*_*pal 32

这应该做的伎俩(当放在根build.gradle脚本中时)

configure(allprojects - project(':Android')) { //or ':Android:AndroidApps' not sure
    println "applying java plugin to $project"
    apply plugin: 'java'  
}
Run Code Online (Sandbox Code Playgroud)

  • @Opal`configure`方法是配置(任意)对象集合的通用方法.对于常见情况(例如`allprojects`或`subprojects`),提供了一种特殊方法,您可以在[Gradle Build Language Reference](http://gradle.org/docs/current/dsl/index)中找到它. HTML). (2认同)

Tar*_*kiv 10

你也可以这样做:

allprojects {
    if (!it.name.startsWith('Android')) {
        apply plugin: 'java'
    }
}
Run Code Online (Sandbox Code Playgroud)