Определение зависимостей для нескольких вариантов

Скажем, у нас есть четыре типа сборки: debug, qa, beta и release.

Мы можем определить зависимости для конкретных вариантов:

dependencies { // These dependencies are only included for debug and qa builds debugCompile 'com.example:lib:1.0.0' qaCompile 'com.example:lib:1.0.0' } 

Есть ли способ скомпилировать эти зависимости для нескольких вариантов без повторения дескриптора артефакта?

Например, я хотел бы сделать что-то вроде этого:

 dependencies { internalCompile 'com.example:lib:1.0.0' } 

Где internalCompile будет указывать, что библиотека включена как для debug и для сборки qa .

Я считаю, что решение заключается в определении новой конфигурации Gradle , но если я создаю конфигурацию internalCompile я не уверен, как обеспечить, чтобы эти зависимости были скомпилированы только для qa и debug сборок.

extendsFrom

Имена конфигураций, из которых эта конфигурация распространяется. В этой конфигурации также доступны артефакты суперконфигураций.

 configurations { // debugCompile and qaCompile are already created by the Android Plugin internalCompile } debugCompile.extendsFrom(internalCompile) qaCompile.extendsFrom(internalCompile) dependencies { //this adds lib to both debugCompile and qaCompile internalCompile 'com.example:lib:1.0.0' } 

В качестве альтернативы:

Вы можете создать коллекцию дескрипторов артефактов и использовать ее с несколькими конфигурациями.

 List internalCompile = ["com.example:lib:1.0.0", "commons-cli:commons-cli:1.0@jar", "org.apache.ant:ant:1.9.4@jar"] List somethingElse = ['org.hibernate:hibernate:3.0.5@jar', 'somegroup:someorg:1.0@jar'] dependencies { debugCompile internalCompile qaCompile internalCompile, somethingElse }