В gradle (4.10) я хотел бы, чтобы ресурсы (css / js), скомпилированные одним проектом, использовались родным проектом (как ресурс).
Структура проекта:
site (compiles all children into java jar)
|--server (java server files)
|--client (precompiled js/sass -> compiled production resources)
|--... (more)
Теперь я бы хотел, чтобы server
(при запуске в dev) имел доступ к файлам, созданным client
.
Состав:
site
|--src/main/resources (more resources, licenses, etc.)
|--build
| |--lib
| |--site.jar (production runnable jar including all files from server, client and possible other sub-projects.)
|
|--server
| |--build
| | |--lib
| | |--server.jar (runnable jar packaged with everything, including client's resources)
| |--src/main/java (java server files)
| |--src/main/resources (server resource files like configs etc.)
|
|--client
|--src
| |--js
| |--sass
| |--...
|--build
|--dist (compiled js and css from sass)
|--lib
|--client.jar (not runnable, contains compiled files from dist and can/will be included in server.jar)
Обычно при запуске server
в разработке у него должен быть доступ к build/dist
client
(обрабатывать его как ресурс), чтобы сервер мог использовать скомпилированные css / js в качестве статического содержимого, а при компиляции в server.jar
эти ресурсы должны быть включены в виде библиотеки client.jar
. Обратите внимание, server.jar
является работоспособным. site.jar
- это оболочка для сервера с дополнительными внедренными модулями (не тема этого вопроса).
Пока у меня есть работающая клиентская и серверная компиляция (они создают .jars, но server.jar
не включает client.jar
, и при этом он не видит сборки клиента в разработке).
Весь этот вопрос направлен на создание связи между сервером и клиентом, описанной выше.
РЕДАКТИРОВАТЬ 1:
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources', project(':client').buildDir.absolutePath + '/dist']
}
}
}
Это довольно хорошо (без копирования и дубликатов файлов), но в нем присутствует некоторая связь. Также это решает только часть проблемы - ресурсы присутствуют в dev и скомпилированы в server.jar
, но это не очень хорошая зависимость. Я хотел бы узнать, как установить правильную зависимость от client.jar
.