Включить сборку одного проекта как ресурсы другого в gradle - PullRequest
0 голосов
/ 29 августа 2018

В 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...