2015-06-16 3 views
1

У меня есть многопроектная сборка Gradle, которая в настоящее время настроена через один файл build.gradle.Gradle multi-project custom build.gradle имя файла

В этом проекте более 70 модулей, и один (гигантский) файл build.gradle стал громоздким в использовании, поэтому я хотел бы разбить его на небольшие файлы для сборки модулей.

Теперь я не хочу иметь 70 небольших файлов build.gradle (по одному в каждом модуле), поскольку это приведет к переходу на конкретную build.gradle боль в среде IDE (единственная разница между файлами их путь).

Я хочу, чтобы мои файлы для каждого модуля были названы после имени модуля.

Вместо этого:

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

Я хочу это:

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

Поскольку это, кажется, не будет официально поддерживается, я попытался взлома вокруг корня build.gradle немного, но кажется, что применение файла .gradle происходит до того, как проекты настроены, поэтому это дает ошибку для проектов, которые зависят от других проектов:

in root build.gradle:

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

foo.gradle, который не является стандартным build.gradle файла:

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

Есть ли способ заставить его работать, как это?

ответ

4

Простой веб-поиск для «Gradle переименования 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, Ханс Доктер, где-то сказал (я считаю, что это было в его "Rocking the Gradle" demo from 2012), что он считал, что одна из их самых больших ошибок заключалась в использовании файла build.gradle в качестве имени файла по умолчанию.

+1

Спасибо, сэр! Из всех поисковых запросов Google, которые я пытался, «переименовать» не было одним из них. Благодаря! –

4

Вы можете настроить имя своих скриптов сборки в файле settings.gradle. Проверьте недавнюю презентацию от Бена Мучко о multi-project или посмотрите на Gradle sources, где аналогичная настройка выполнена.

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

Yup, это делает трюк. Благодаря! –

+0

Подробно на слайде 52 из 78 от Ben Muschko найдено в ссылке «multi-project» – javajon

Смежные вопросы