Перенесите плагин frontend-maven с maven на gradle
У меня есть com.github.eirslett:frontend-maven-plugin
в моем проекте maven
.
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>0.0.27</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>bower install</id>
<goals>
<goal>bower</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>install</arguments>
<workingDirectory>${basedir}/src/main/webapp</workingDirectory>
</configuration>
</execution>
</executions>
<configuration>
<nodeVersion>v4.2.4</nodeVersion>
<npmVersion>2.7.1</npmVersion>
<nodeDownloadRoot>https://nodejs.org/dist/</nodeDownloadRoot>
<npmDownloadRoot>https://registry.npmjs.org/npm/-/</npmDownloadRoot>
<workingDirectory>${basedir}/src/main/webapp</workingDirectory>
</configuration>
</plugin>
Теперь мне нужно перенести его в gradle
, но я не могу найти примеры, как это сделать. Инструмент миграции класса переводит только зависимости, но не плагины. Есть ли некоторые примеры, как я могу использовать frontend-maven-plugin
в gradle
?
Ответы
Ответ 1
Вы можете не найти какого-либо примера использования frontend-maven-plugin
в Gradle, поскольку он посвящен Maven. Но вы можете взглянуть на плагин Siouan Frontend Gradle, который является эквивалентным решением для Gradle и позволяет (с официального сайта):
Интегрируйте свой внешний интерфейс NPM/Yarn в Gradle.
Использование и конфигурация кажутся близкими к вашей конфигурации Maven. Определите версию Node/NPM/Yarn в файле build.gradle
, свяжите сценарии, которые вы хотите запустить, в зависимости от задачи жизненного цикла Gradle (очистка/сборка/проверка) и все. Ниже приведен типичный пример использования Gradle 5.4 с NPM, взятый из документации:
// build.gradle
plugins {
id 'org.siouan.frontend' version '1.1.0'
}
frontend {
nodeVersion = '10.15.3'
// See 'scripts' section in your 'package.json file'
cleanScript = 'run clean'
assembleScript = 'run assemble'
checkScript = 'run check'
}
Вы заметите:
- В отличие от
frontend-maven-plugin
там нет декларации/конфигурации для запуска сборки фронтэнда с Gradle, так как она уже предоставлена из коробки. Загрузка, установка Node/NPM/Yarn не требует декларации/конфигурации - кроме номеров версий, а также задач сборки. Просто предоставьте командную строку NPM/Yarn для очистки/сборки/проверки вашего интерфейса. - Максимально поддерживаемая версия Node должна быть
6.2.1
. Таким образом, ваша первоначальная конфигурация с 4.2.4
потребует переноса узла. - Плагин не поддерживает Bower, и я не думаю, что он будет поддерживаться в будущем, поскольку Bower теперь поощряет миграцию на Yarn. Вы найдете руководство по миграции на сайте Bower.
- Плагин не поддерживает использование определенного выпуска NPM. NPM теперь поставляется вместе с Node, плагин использует версию, встроенную в загруженный дистрибутив Node.
С уважением
Ответ 2
Google нашел плагин Gradle Frontend для меня. Описание плагина просто говорит:
Набор задач, который включает в себя общие инструменты интерфейса и предоставляет его двоичные файлы.
В документации (по состоянию на март 2016 года) описаны 4 задачи (installnode
, npm
, grunt
и gulp
) и примеры их использования.
Альтернативой (предоставляемой @Timofei) является плагин Gradle для Node. В описании сказано:
Этот плагин позволяет вам использовать технологии на основе NodeJS как часть вашей сборки, не устанавливая NodeJS локально в вашей системе. Он объединяет Gradle с NodeJS, Yarn, Grunt и Gulp.
(Отредактировано для ясности)
Обратите внимание, что этот плагин Github repo активен, в то время как предыдущий не имел никаких коммитов за последние два года.