У меня есть мультипроект, где я хочу присоединить ресурсы из разных мест (подпроекты, которые их генерируют), но также разместить их в разных выходных каталогах.
wrapper (parent)
|--frontend (child)
| |--build/dist
| |--js
| | |-- ...
| |--css
| |-- ...
|--lib (child)
|--build/dist
|--python
|-- ...
Мне нужно, чтобы wrapper (parent)
обрабатывать оба дочерних проекта build/dist
как ресурс, НО, помещенный в разные outputDir
.
frontend/build/dist
будет в ./wrapper/build/resources/main/static
lib/build/dist
будет в./wrapper/build/resources/main
Цель - предоставить ресурс sourceSet main
при добавлении в каталог static
при перемещении в outputDir
.
Обратите внимание, что outputDir
НЕ jar
задача.Это не проблема с упаковкой, а проблема outputDir
.
sourceSets {
main {
resources {
srcDirs [
project(':frontend').projectDir.absolutePath + '/build/dist'
project(':lib').projectDir.absolutePath + '/build/dist'
]
}
output.resourcesDir project.buildDir.absolutePath + '/resources/main/static'
}
}
Выше будут добавлены ресурсы в основной sourceSet, но у них будет тот же output.resourceDir.
Заключительные вопросы
- Существует ли синтаксис, позволяющий определять выходные данные для данного источника?Можете ли вы привести пример?
- Если нет (пока?), Я думаю об определении более одного
sourceSet
.По сути, определяя main1
и main2
, это будет работать нормально, но у меня есть некоторые проблемы с тем, чтобы эти sourceSets
были дочерними по отношению к main
.Другими словами - если вы определяете пользовательский sourceSet
(не main
или test
), вам нужно его скомпилировать - как ?Я знаю, что могу дать команду: gradle build sourceSetName
, чтобы вызвать определенную пользовательскую sourceSet
компиляцию, как я могу это сделать, так что это зависимость от main
?
Я использую Gradle 4.10.1 с Java(и затмение) плагины.