Как использовать пакет npm в качестве зависимости от maven?

Я хочу использовать пакет npm в проекте java maven.

Это всего лишь один файл, который используется в проекте Java.

У нас есть два проекта.

  1. реагировать на внешний проект, где bundle.js — это артефакт, который загружается с помощью maven

  2. проект java maven, в котором мы используем bundle.js как зависимость maven

Теперь мы хотим избавиться от вещей maven в проекте реагирования.

Итак, мы загрузим bundle.js как пакет npm в наш реестр npm.

Мы используем nexus3 для наших репозиториев npm и maven.

Я хочу избежать добавления плагина maven в проект java для установки пакета npm с реальной установкой npm.

Может быть, есть какой-то плагин прокси-сервера npm maven для maven или возможность прокси-сервера npm maven в nexus3?

Спасибо!

Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
3
0
2 015
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Теперь мы решили эту проблему с помощью модифицированной версии следующего 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>

На момент написания этой статьи jnpm-maven-plugin не находится в центре maven. Какой репозиторий использовать?

Stephan 23.08.2020 05:05

Да - была такая проблема с публикацией. Версия 1.1 действительно уже есть на центральном сервере. Пожалуйста, проверьте проблему github.com/OrienteerBAP/JNPM/issues/5 для более подробной информации.

Ilya Naryzhnyy 13.12.2020 20:23

Другие вопросы по теме