Как добавить модули Node в проект Spring Boot?

Я создаю веб-приложение с бэкэндом Spring и интерфейсом React. Его конфигурация основана на этом минимальном проекте Spring Boot/React.

Теперь я хочу использовать в этом проекте компонент react-checkbox-tree.

Как мне это сделать?

Я пробовал две разные вещи.

Попытка 1

В файле pom.xml React модуль включается с помощью следующего объявления:

<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>react</artifactId>
    <version>15.6.1</version>
</dependency>

Я пытался найти такой артефакт для компонента дерева, но не смог.

Попытка 2

Я попытался установить компонент дерева как глобальный модуль (npm install -g react-checkbox-tree).

Это не помогло. я получаю ошибку

[INFO] ERROR in ./src/main/js/app.js
[INFO] Module not found: Error: Cannot resolve module 'react-checkbox-tree' in C:\myproject\src\main\js
[INFO]  @ ./src/main/js/app.js 5:25-55

во время сборки.

Обновление 1 (13.08.2017, 23:57):

На главной странице WebJars я нашел руководство о том, как упаковать модуль Node в виде WebJar (чтобы может быть интегрирован в проект Spring Boot, как обычная зависимость Maven). Я начал создавать проект WebJar для react-checkbox-tree.

Исходный код можно найти здесь.

В настоящее время проблема заключается в UPSTREAM_ZIP_URL, упомянутом в pom.xml в учебнике:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <upstream.url>UPSTREAM_ZIP_URL</upstream.url>

Я посмотрел код React WebJar и пришел к выводу, что для react-checkbox-tree, v. 0.6.4, UPSTREAM_ZIP_URL должно быть https://unpkg.com/[email protected]/dist. Однако я ничего не нахожу в этом месте. Но есть несколько файлов по адресу https://unpkg.com/[email protected]/.

Буду признателен, если кто-нибудь ответит на следующие вопросы:

  1. Могу ли я предположить, что в данном случае UPSTREAM_ZIP_URL равно https://unpkg.com/[email protected]/lib/?
  2. Как я могу создать этот веб-проект JAR или отправить его на WebJars.org?

person Mentiflectax    schedule 13.08.2017    source источник
comment
Я предлагаю вам разделить приложение на два проекта. Один из них — настоящий javascript, основанный на npm. Вы можете настроить веб-пакет по своему усмотрению и создать дистрибутив, версию которого вы используете с помощью maven. В своем веб-приложении вы ссылаетесь на свой интерфейс как на зависимость и размещаете его в нужном месте, используя wagon или плагин зависимости. Это поможет: stackoverflow.com/questions/38532210/   -  person thst    schedule 13.08.2017
comment
Спасибо, но это решение звучит как последнее средство для меня. Мне интересно, сколько усилий потребуется, чтобы упаковать пакет дерева, как зависимость из попытки 1 (т.е. сделать возможным добавление зависимости дерева через файл POM).   -  person Mentiflectax    schedule 13.08.2017
comment
Есть и другой подход, они настраивают дополнительные военные ресурсы из углового проекта stackoverflow.com/questions/42593975/ Но они также используют подход с двумя проектами.   -  person thst    schedule 13.08.2017
comment
Это последнее средство является рекомендуемым подходом. Отделите серверную часть от внешнего интерфейса и сверните только ресурсы внешнего интерфейса в ZIP-файл зависимостей (jar).   -  person chrylis -cautiouslyoptimistic-    schedule 13.08.2017
comment
Если мы сравним многопроектный подход с упаковкой зависимости в виде веб-файла JAR, почему многопроектный подход лучше?   -  person Mentiflectax    schedule 13.08.2017
comment
Если вы посмотрите, что происходит с webjar на github.com/dpisarenko/webjar-react-checkbox-tree/blob/master/ вы увидите, что он фактически распаковывает банку. Фактически это то же самое, что и копирование из родственного проекта, только без загрузки с внешнего URL-адреса. Преимущество мультипроекта в одной и той же системе контроля версий заключается в сохранении изменений во внешнем и внутреннем интерфейсе в одном коммите. Я бы тоже рекомендовал последнее средство :-)   -  person gesellix    schedule 14.08.2017