首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gradle:禁用在多项目应用程序中根创建构建文件夹。

gradle:禁用在多项目应用程序中根创建构建文件夹。
EN

Stack Overflow用户
提问于 2018-07-25 11:43:02
回答 2查看 2.8K关注 0票数 13

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

代码语言:javascript
复制
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文档/论坛上搜索,但没有受到任何影响。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-28 13:31:18

谁负责build dir的创建?

马克·维埃拉是一个Gradle核心开发工具,只要它创建输出,每个任务都负责创建输出dir。

因此,基本上,您的根项目确实有一个build dir,这意味着它不是空的,有些东西是有意写入的。

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

我能做些什么来删除根build dir,不管创建它的任务是什么?

只需为根项目设置buildFinished钩子即可。

代码语言:javascript
复制
gradle.buildFinished {
    project.buildDir.deleteDir()
}
票数 11
EN

Stack Overflow用户

发布于 2021-11-29 21:15:24

我认为我有一个更正确的解决方案,而不必在创建后删除/build文件夹:)

正如我们所知道的,当我们将一些插件附加到我们的gradle项目中时,通常它会为gradle生命周期添加一些任务。所以您可以禁用创建/build文件夹的任务。

仅使用java插件,就可以禁用buildjar任务。

为此,请将以下行添加到根build.gradle文件:

代码语言:javascript
复制
jar.enabled = false
build.enabled = false

如果您有一个org.springframework.boot插件,请禁用另外两个任务:

代码语言:javascript
复制
bootJar.enabled = false
bootJarMainClassName.enabled = false
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51518039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档