gradle:在多项目应用程序中禁用在根目录下创建生成文件夹

gradle:在多项目应用程序中禁用在根目录下创建生成文件夹,gradle,build,Gradle,Build,我的gradle项目是一个多项目结构。它由两个子项目组成。根项目中的Mybuild.gradle,如下所示: allprojects { apply plugin: 'eclipse' } subprojects { apply plugin: 'java' apply plugin: 'maven-publish' publishing { repositories { maven { name 'myMaven' def

我的
gradle
项目是一个
多项目结构。它由两个子项目组成。根项目中的My
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
    }
  }
}
gradlebuild
之后,我得到了三个build文件夹。一个在根目录中,另两个在各自的子项目中。根项目只是一个没有任何源代码的空文件夹,它只是一个多项目容器

现在我需要消除根构建文件夹的创建,因为它没有任何用处。我在网上和gradle文档/论坛上搜索,但没有得到任何点击

有没有办法让gradle停止在根级别创建生成文件夹?

谁负责创建
build
dir? ,一个Gradle核心开发人员,每个任务都负责创建输出目录,只要它创建了输出

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

在我的工作中,我管理一个由根项目组成的大项目,它处理许多
.gradle
文件、设置文件等,以及许多带有实际代码的子项目。当我运行
gradle clean build
时,所有子项目都会使用libs、二进制文件等获得自己的
build
dir。但是根项目不会以任何
build
dir结束,因为没有任何任务会在根
build
dir中写入输出

我可以做什么来删除根
build
dir,不管创建它的任务是什么? 只需为根项目设置一个
buildFinished
hook

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

你为什么关心那个文件夹?只需将其从版本控制中排除并隐藏在IDE中,就可以了。它已经被排除了。上面的原因是我们不希望在bamboo服务器中创建该文件夹。创建后删除该文件夹可以解决您的问题吗?生成后根
build
文件夹中有什么?