gradle:禁止在多项目应用程序的根目录创建构建文件夹

标签 gradle build

我的 gradle项目是 multi-project结构体。它由两个子项目组成。我的 build.gradle在根项目中如下:

allprojects {
  apply plugin: 'eclipse'
}

subprojects {
  apply plugin: 'java'
  apply plugin: 'maven-publish'

  publishing {
    repositories {
      maven {
        name 'myMaven'
        def suffix = project.version.endsWith("SNAPSHOT") ? "snapshots" : "releases"
        url baseUrl + suffix
      }
    }

    publications {
      core(MavenPublication) {
        artifactId project.name
        artifact jar
      }
    }
  }
}

project(':projectA') {
  ext {
    sharedManifest = manifest {
      attributes("Implementation-Title": project.name,
                 "Implementation-Version": 1.0 )
    }
  }
  jar {
    manifest = project.manifest {
      from sharedManifest
    }
  }
}

project('projectB') {
  ext {
    sharedManifest = manifest {
      attributes("Implementation-Title": project.name,
                 "Implementation-Version": 2.0 )
    }
  }
  jar {
    manifest = project.manifest {
      from sharedManifest
    }
  }
}

之后 gradle build ,我有三个构建文件夹。一个在根目录,另外两个在各自的子项目中。根项目只是一个没有任何源代码的空文件夹,它只是一个多项目容器。

现在我需要消除根构建文件夹的创建,因为它没有用。我在网上和 gradle docs/forum 上搜索,但没有受到任何打击。

有什么办法可以让 gradle 停止在根级别创建构建文件夹?

最佳答案

谁负责build目录创建?

According to Mark Vieira ,一个 Gradle 核心开发者,每个任务只要创建输出就负责创建输出目录。

所以基本上,你的根项目确实有一个 build dir,这意味着它不是空的,并且是故意写入的东西。

在我的工作中,我正在管理一个由根项目构成的大项目,它处理许多 .gradle文件、设置文件等以及许多带有实际代码的子项目。当我运行 gradle clean build ,所有子项目都有自己的build带有库、二进制文件等的目录,但根项目没有以任何 build 结尾dir 因为没有任何任务将输出写入根目录 build目录

我该怎么做才能删除根 build dir,创建它的任何任务?

只需设置一个buildFinished Hook 仅适用于根项目

gradle.buildFinished {
    project.buildDir.deleteDir()
}

关于gradle:禁止在多项目应用程序的根目录创建构建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518039/

相关文章:

gradle - 找不到 lint-gradle-api.jar (com.android.tools.lint :lint-gradle-api:26. 1.2) flutter 项目

spring - Thymeleaf模板(Spring MVC)无法找到静态资源

java - 我想使用 Maven 从我的 libs 项目文件夹中加载所有 JAR

java - mvn clean 和 install 命令之间的区别

Android studio Gradle依赖库下载地址

android - 执行com.android.build.gradle.internal.tasks.Workers $ ActionFacade时发生故障

java - Groovy AST 转换 - 如何使用 Gradle 和 Intellij IDEA 编译 java 带注释的类

java - 我如何解决关于 Maven 的构建错误?

c - 如何将字符串中的\字符更改为/字符?

gradle - 如何使用 gradle 脚本 Kotlin 构建文件构建可运行的 ShadowJar?