将前端 maven-plugin 从 maven 迁移到 gradle

2022-09-03 02:25:11

我的项目中有一个。com.github.eirslett:frontend-maven-pluginmaven

<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>

现在我需要将其迁移到,但我找不到如何做到这一点的示例。等级迁移工具仅转换依赖项,而不转换插件。有没有一些例子,我如何使用?gradlefrontend-maven-plugingradle


答案 1

您可能找不到任何有关如何在Gradle中使用的示例,因为它是专用于Maven的。但是你可以看看Siouan Frontend Gradle插件,它是Gradle的等效解决方案,并允许(从官方网站):frontend-maven-plugin

将您的前端 NPM/Yarn 构建集成到 Gradle 中。

用法和配置似乎与您的 Maven 配置很接近。在文件中定义 Node/NPM/Yarn 版本,根据 Gradle 生命周期任务(清理/组装/检查)链接要运行的脚本,仅此而已。以下是 Gradle 5.4 下 NPM 的典型用法,取自文档:build.gradle

// 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'
}

您会注意到:

  • 与 相反,没有声明/配置可以使用Gradle触发前端构建,因为它已经开箱即用。Node/NPM/Yarn 的下载和安装不需要声明/配置 - 除了版本号以及构建任务。只需提供 NPM/Yarn 命令行即可清理/组装/检查前端。frontend-maven-plugin
  • 受支持 um 的 Node 版本应为 。因此,您的初始配置将需要迁移 Node。6.2.14.2.4
  • 该插件不支持Bower,我认为将来也不会支持它,因为Bower现在鼓励迁移到Yarn。您可以在Bower的网站上找到迁移指南。
  • 该插件不支持使用特定的 NPM 版本。NPM现在与Node一起打包,该插件使用下载的Node发行版中嵌入的版本。

问候


答案 2

谷歌为我找到了Gradle前端插件。插件描述只是说:

一组任务,用于包装常见的前端工具并提供其二进制文件。

文档(截至 2016 年 3 月)描述了 4 个任务 (、 和 ) 及其使用示例。installnodenpmgruntgulp


另一种选择(由@Timofei提供)是 Node 的 Gradle 插件。描述说:

此插件使您能够使用基于NodeJS的技术作为构建的一部分,而无需在系统上本地安装NodeJS。它将Gradle与NodeJS,Yarn,Grunt和Gulp集成在一起。

(为清楚起见,已编辑)

请注意,此插件的Github存储库处于活动状态,而前一个存储库在过去两年中没有任何提交。


推荐