首页 文章

Gradle多项目自定义build.gradle文件名

提问于
浏览
3

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

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

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

我想要的是我的每个模块的buildscript文件以模块名称命名 .

而不是这个:

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

我要这个:

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

由于这似乎没有得到官方支持,我尝试了一下root build.gradle,但似乎在配置项目之前应用.gradle文件,所以这给依赖于其他项目的项目带来了错误项目:

在root build.gradle中:

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

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

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

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

3 回答

  • 5

    一个简单的网页搜索"gradle rename build.gradle"呈现the below example settings.gradle file

    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 作为默认文件名 .

  • 6

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

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

    您可以在Gradle in action,manning中找到此内容

    enter image description here

相关问题