当前位置: 首页 > 面试题库 >

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

常光明
2023-03-14
问题内容

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

allprojects {
    apply plugin: 'java'
}

为所有项目指定。

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

这里是项目布局的粗略概述

+ Main
+-- javaApplications
+-- javaLibs
+-- Android
+-----AndroidApps
+-----AndroidLibs

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


问题答案:

这应该可以解决问题(放置在根build.gradle脚本中时)

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


 类似资料:
  • 我有一个多项目的gradle构建,其中一个子项目是应用Artifactory插件(版本4.2.0),并配置contextUrl和resolve repoKey。 它设置一个简单的配置和依赖项,然后有一个复制任务来检索依赖项作为zip文件并将其解压缩到目录中。 然而,当复制任务运行时,我得到下面的错误。我做错了什么?这是Artifactory插件或gradle的问题,还是。。。? 问题似乎与该项目是

  • 我有一个具有以下依赖结构的gradle项目: 这是由Jersey和ASM4.1之间的不兼容性引起的(Jersey使用3.3.1,它具有不同的组id),这是从另一个模块提取的传递依赖项。 顺便说一句,我知道Idea13有更好的Gradle集成,但是(a)我们有12的许可证,而且不会很快升级整个开发团队;(b)Idea13在多语Gradle项目(Java/Scala)方面仍然存在一些问题,所以它不符合

  • 是否可以设置子gradle项目的父项目。 在我的例子中,所有父子项目都位于文件层次结构中的同一级别。例如 > 代码 > /父项目 构建。格拉德尔 /child项目1 构建。格拉德尔 /子项目2 构建。格拉德尔 这里,项目1依赖于项目2,所以我将它们称为 也在我的设置中。gradle文件,我有 有了它,我可以从父项目文件夹运行任务,但单个任务不会从子项目运行。

  • 目前,如果我试图在Gradle中做类似的事情,排除将被忽略,并且下载所有六个工件。 我使用的是Gradle版本1.8。

  • 我有一个多项目分级配置,我想添加一个插件到所有子项目和根项目以及。阅读这里的文档似乎很容易: 如果您有一个多项目构建,您可能希望将插件应用于构建中的一些或所有子项目,而不是根项目或主项目。plugins{}块的默认行为是立即解析并应用插件。但是,您可以使用apply false语法告诉Gradle不要将插件应用到当前项目,然后在subprojects块中使用apply plugin:~plugin

  • 我有一个多模块java项目,我想在其中创建jar(bin、source、javadoc),但我很难从子项目配置中的子项目中获取变量。 这是我在根项目中的build.gradle文件: 这就是建筑。gradle文件子项目之一: 当我想运行构建脚本时,我得到了以下异常: 无法获取类型为org的对象的未知属性“mainClassName”。格雷德尔。应用程序编程接口。JAVA档案内部的默认舱单。 在子流