2016-07-04 2 views
0

Я реструктурирую/реорганизую процесс сборки для большого (иш) проекта. В настоящее время он содержит более десятка отдельных модулей, построенных с помощью автономных скриптов сборки. Я хочу объединить их в единую сборку мультипроектов в Gradle.Multiproject build: зависимость от тестов jar

После того как я включил все источники в одно дерево, исправил build.gradle, я столкнулся со следующей проблемой. Зависимости для многих модулей содержат что-то вроде:

dependencies { 
    compile group: 'com.company', name: 'Module', version: '1.2.3' 
    // ... 
    testCompile group: 'com.company', name: 'Module', version: '1.2.3', classifier: 'tests' 
} 

Я хочу построить, чтобы использовать банки из подпроекта, а не из хранилища. Я заменил compile ... на compile project(':Module'), и он отлично работает. Однако я не могу найти способ передать спецификацию «тесты» на зависимость testCompile project....

Есть ли способ подобрать банку tests в качестве зависимости от testCompile?

+0

Подождите ... У вас есть тестовый код в проекте A, который зависит от тестового кода в проекте B? Это звучит немного необычно. Предполагая, что мы говорим об модульных тестах, они обычно были бы очень локальными. – Jolta

+0

Ну ... Да. Я унаследовал проект в очень жалком состоянии. В проекте B есть некоторые тестовые утилиты, от которых зависят модульные тесты в проекте A. – Tomo

ответ

1

В проекте-изготовителе вам нужно объявить JAR «Test» как уходящий артефакт.

configurations { 
    testUtils 
} 

task testUtilsJar(type: Jar) { 
    ... 
} 

artifacts { 
    testUtils testUtilsJar 
} 

В потребляющего проекте вы зависите от него, как, например:

dependencies { 
    testCompile project(path: ':Module', configuration: 'testUtils') 
} 
Смежные вопросы