Включение модулей узла в Spring Boot jar

#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 также удаляются артефакты webpack

4. Для этого я использую .gitignore. Современные IDE довольно хорошо работают с этой функцией git.