自 2015 年以来,Christian Ulbrich 的出色回答中提到了 frontend-maven-plugin 的替代方案:
https://github.com/aseovic/npm-maven-plugin
用法
基本上,使用它所需要做的就是像往常一样将它放入您的 POM 中(并使用“extensions:true”):
<build>
<plugins>
<plugin>
<groupId>com.seovic.maven.plugins</groupId>
<artifactId>npm-maven-plugin</artifactId>
<version>1.0.4</version>
<extensions>true</extensions>
</plugin>
[...]
</plugins>
</build>
然后插件将自动绑定到 Maven 生命周期。然后,您可以将脚本放入您的 package.json 中,例如:
"scripts":
{
"package": "npm pack",
[...]
}
并且 npm 脚本“包”将作为 Maven 构建生命周期阶段“包”的一部分自动运行。
与前端 Maven 插件相比
就像 frontend-maven-plugin 一样,它将在 maven 项目中运行 npm 脚本。有两个重要的区别:
- frontend-maven-plugin 将(并且必须)下载并安装 npm 本身。npm-maven-plugin 使用(并且需要)已安装的 npm 版本。
- frontend-maven-plugin 要求您在 POM 中描述每个 npm 调用(作为“执行”部分)。相比之下,npm-maven-plugin 只是扩展了Maven 构建生命周期,以自动为每个生命周期阶段(清理、安装等)执行具有相同名称的 npm 脚本。这意味着POM 中没有特定于 npm 的配置——它全部取自 package.json。
就个人而言,我更喜欢 npm-maven-plugin 的方法,因为它需要在 POM 中进行较少的配置- POM 有变得臃肿的趋势,并且所有可以解决的问题都有帮助。此外,将npm 调用放入 package.json感觉更自然,并允许在直接调用 npm 时重用它们。
诚然,即使使用 frontend-maven-plugin,您也可以 [并且可能应该] 将所有 npm 调用定义为 package.json 中的脚本,并从 POM 调用这些脚本,但仍然存在将它们直接放入 POM 的诱惑。