【问题标题】:Gradle multi-project custom build.gradle file nameGradle 多项目自定义 build.gradle 文件名
【发布时间】:2015-06-16 15:36:34
【问题描述】:

我有一个多项目 Gradle 构建,目前通过单个 build.gradle 文件进行配置。

这个项目有 70 多个模块,单个(巨大的)build.gradle 文件使用起来变得很麻烦,所以我想将它拆分为每个模块的小型 buildscript 文件。

现在,我不想拥有 70 个小的 build.gradle 文件(每个模块中有一个),因为这会使导航到特定的 build.gradle 在 IDE 中变得很痛苦(文件之间的唯一区别是它们小路)。

我想要的是我的每个模块构建脚本文件以模块名称命名。

而不是这个:

root  
|--foo\  
|--| build.gradle  
|--bar\  
|--| build.gradle 

我想要这个:

root  
|--foo\  
|--| foo.gradle  
|--bar\  
|--| bar.gradle 

由于这似乎没有得到官方支持,我尝试对根 build.gradle 进行一些修改,但似乎应用 .gradle 文件是在项目配置之前发生的,所以这会给项目带来错误依赖其他项目:

在根 build.gradle 中:

subprojects { subProject ->
    rootProject.apply from: "${subProject.name}/${subProject.name}.gradle"
}

foo.gradle,它不是标准的 build.gradle 文件:

project('foo') {
    dependencies {
        compile project(':bar')
    }
} 

有没有办法让它像这样工作?

【问题讨论】:

    标签: gradle build multi-project


    【解决方案1】:

    您可以在settings.gradle 文件中自定义构建脚本的名称。查看 Ben Muschko 最近关于 multi-project 构建的演示文稿或查看 Gradle sources 进行了类似的自定义。

    rootProject.children.each {
      it.buildFileName = it.name + '.gradle'
    }
    

    【讨论】:

    • 在上面链接“多项目”中找到的 Ben Muschko 的 78 张幻灯片中的第 52 张幻灯片中有详细说明
    【解决方案2】:

    “gradle rename build.gradle”的网络搜索呈现以下示例 settings.gradle 文件:

    rootProject.buildFileName = 'epub-organizer.gradle'
    
    rootProject.children.each { project ->
        String fileBaseName = project.name.replaceAll("\p{Upper}") { "-${it.toLowerCase()}" }
        project.buildFileName = "${fileBaseName}.gradle"
    }
    

    请注意,作者在这里还重命名了根项目的构建脚本,您可能想要也可能不想要。

    Gradle 的作者之一 Hans Dockter 在某处说过(我相信是在他的 "Rocking the Gradle" demo from 2012 中),他认为他们最大的错误之一是使用 build.gradle 作为默认文件名。

    【讨论】:

    • 谢谢您,先生!在我尝试过的所有谷歌搜索中,“重命名”不是其中之一。谢谢!
    【解决方案3】:

    你可以在 Gradle 中找到这个内容,manning

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 2019-04-15
      相关资源
      最近更新 更多