#reactjs #spring-boot #gradle #npm #package.json
#reactjs #spring-загрузка #gradle #npm #package.json
Вопрос:
У меня есть приложение Spring boot, которое имеет интерфейс react. У меня есть package.json, который содержит все мои зависимости от узлов, и я использую gradle для моих зависимостей spring boot.
Однако, когда я хочу создать jar для своей производственной среды, я не уверен, как включить модули узла, чтобы они поставлялись вместе с jar (таким образом, мой интерфейс react имеет все зависимости, которые требуются для prod). Для моей среды разработки у меня есть задача, которая настраивает среду, которая выглядит следующим образом:
task setupEnv {
group = 'application-dev'
dependsOn 'npmSetup'
dependsOn 'npmInstall'
}
В качестве альтернативы можно ли каким-либо образом использовать docker для настройки модулей в производственной среде? Я очень не уверен в том, как с этим поступить, и буду признателен за любую помощь.
Комментарии:
1. Если вы обслуживаете интерфейс в prod от Spring, вам действительно нужны какие-либо Node deps? Они нужны вам для создания статических HTML, JS и CSS для перехода в jar, но не после этого.
2. @jonrsharpe, я верю, что они мне понадобятся (но не уверен), мои зависимости включают в себя такие вещи, как material-ui, которые я использую для своего пользовательского интерфейса.
3. Все это должно оказаться в связанных файлах, выходной каталог предназначен для статического обслуживания.
4. @jonrsharpe, я думаю, что это имеет смысл, позвольте мне попробовать. Спасибо.
5. я заметил, что не все зависимости, которые должны быть там. Только некоторые.
Ответ №1:
Скорее всего, вы используете какой-то этап сборки для создания интерфейсных ресурсов, например скриптов Webpack / Gulp / NPM. Укажите вывод этого процесса сборки JS на src/main/resources
.
Ваша сборка Gradle должна основываться на плагине Spring Boot Gradle. С помощью этого плагина Gradle Gradle автоматически создаст fat JAR со всеми вашими интерфейсными ресурсами. Spring Boot по умолчанию будет использовать его в качестве интерфейсных ресурсов вашего веб-приложения.
Вам не нужно делать ничего особенного, если вы следуете умолчанию Spring Boot.
Комментарии:
1. Извините, но вы не ответили на вопрос.
2. @NesanMano, на самом деле я ответил на это. Но это могло быть упущено разработчиками, которые не знакомы с элементарными основами экосистемы Spring Boot. Теперь ответ обновлен и более конкретен, как эти интерфейсные ресурсы окажутся в JAR.
3. @luboskrnac проголосовал за ответ на вопрос; однако я думаю, что это может потребовать некоторой настройки, поскольку
src/main/resources
, скорее всего, проверено в системе управления версиями. Что я обычно делаю, так это вывод webpack вbuild/resources
и добавляю это в путь к классуbootJar
задачи, таким образомgradle clean
также удаляются артефакты webpack4. Для этого я использую .gitignore. Современные IDE довольно хорошо работают с этой функцией git.