Ответ 1
Вы можете попробовать использовать трюк, который они используют в Gradle свой файл settings.gradle. Обратите внимание, как каждый из подпроектов находится в папке 'subprojects/${projectName}'
, но сама папка subprojects
не является проектом.
Итак, в вашем случае вы бы сделали что-то вроде:
include "source:compA-api"
include "source:compA-core"
include "source:compB"
project(':source:compA-api').projectDir = new File(settingsDir, 'source/compA/api')
project(':source:compA-core').projectDir = new File(settingsDir, 'source/compA/core')
Я намеренно пропустил двоеточие между compA
и api
, чтобы убедиться, что source:compA
не получает оценку как контейнер проекта.
В качестве альтернативы вы можете попробовать исключить проект source:compA
из того, что к нему применен плагин java
, выполнив что-то вроде:
def javaProjects() {
return subprojects.findAll { it.name != 'compA' }
}
configure(javaProjects()) {
apply plugin: 'java'
}
Edit: В качестве альтернативы вы можете попробовать что-то вроде этого (настройте на свой вкус):
def javaProjects() {
return subprojects.findAll { new File(it.projectDir, "src").exists() }
}
configure(javaProjects()) {
apply plugin: 'java'
}