Я хочу использовать пакет npm в проекте java maven.
Это всего лишь один файл, который используется в проекте Java.
У нас есть два проекта.
реагировать на внешний проект, где bundle.js — это артефакт, который загружается с помощью maven
проект java maven, в котором мы используем bundle.js как зависимость maven
Теперь мы хотим избавиться от вещей maven в проекте реагирования.
Итак, мы загрузим bundle.js как пакет npm в наш реестр npm.
Мы используем nexus3 для наших репозиториев npm и maven.
Я хочу избежать добавления плагина maven в проект java для установки пакета npm с реальной установкой npm.
Может быть, есть какой-то плагин прокси-сервера npm maven для maven или возможность прокси-сервера npm maven в nexus3?
Спасибо!


Теперь мы решили эту проблему с помощью модифицированной версии следующего maven плагин.
Это позволяет нам использовать наш частный реестр npm с базовой аутентификацией.
С помощью плагина мы можем загрузить пакеты npm из проекта java в целевой каталог:
<plugin>
<groupId>org.mule.tools.javascript</groupId>
<artifactId>npm-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>fetch-modules</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/npmpackages</outputDirectory>
<npmRepositoryBase>${npm.repositoryUrl}</npmRepositoryBase>
<username>${npm.username}</username>
<password>${npm.password}</password>
<packages>
<package>ourfont:1.0.1</package>
</packages>
</configuration>
</execution>
</executions>
</plugin>
Затем мы используем плагин maven-resources-plugin для копирования файла в каталог src на той же фазе и перезаписываем его каждый раз, чтобы убедиться, что это правильная версия:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>generate-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${basedir}/src/main/webapp/fonts</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/npmpackages/ourfont</directory>
<include>ourfont.ttf</include>
<include>ourfont.svg</include>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Глобальная конфигурация для плагина выполняется в нашем файле maven-settings.xml, который доступен в любой среде:
<profil>
...
<properties>
<npm.repositoryUrl>https://nexus......com/repository/npm-group/</npm.repositoryUrl>
<npm.username>[email protected]</npm.username>
<npm.password>......</npm.password>
</properties>
</profil>
Существует свежий плагин maven для выполнения таких операций, как получение ресурсов из NPM, фильтрация и упаковка в JAR:WAR: https://github.com/OrienteerBAP/JNPM
Образец для pom.xml
<plugin>
<groupId>org.orienteer.jnpm</groupId>
<artifactId>jnpm-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>install</goal>
</goals>
<configuration>
<packages>
<package>[email protected]</package>
<package>vuex@~3.4.0</package>
</packages>
</configuration>
</execution>
</executions>
</plugin>
Да - была такая проблема с публикацией. Версия 1.1 действительно уже есть на центральном сервере. Пожалуйста, проверьте проблему github.com/OrienteerBAP/JNPM/issues/5 для более подробной информации.
На момент написания этой статьи jnpm-maven-plugin не находится в центре maven. Какой репозиторий использовать?