当我遍历到src/main/app/
文件夹结构时,我有package.JSON
& gruntfile,我能够运行npm install
和grunt
命令。但是当我在POM文件存在时尝试在项目的根文件夹中运行mvn jetty:run
和属性文件时,它会抛出错误,它无法在文件夹结构npm install
中运行src/main/app/
}}
这是确切的错误:
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (n
pminstall) on project my-abc-web: Command execution failed. Cannot
run program "npm" (in directory "C:\Users\Achyut_J01\Documents\GitHub\infras\my-abc\my-abc-web\src\main\app"): CreatePro
cess error=2, The system cannot find the file specified -> [Help 1]
这是一台Windows机器。
答案 0 :(得分:10)
我使用此解决方法来构建跨平台的Maven构建:将npm可执行文件名称声明为Maven变量,并在Windows上运行时使用Maven过滤器修改此可执行文件名称。
Grunt,Bower等也可以这样做。
如果您使用exec-maven-plugin> = 1.6.0 (感谢Manmay获取评论中的信息),则不再需要此解决方法:这是此插件的错误(见https://github.com/mojohaus/exec-maven-plugin/issues/42),已在1.6.0中修复(见https://github.com/mojohaus/exec-maven-plugin/pull/46)
<properties>
<npm.executable>npm</npm.executable>
</properties>
(...)
<build>
<plugins>
(...)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>exec-npm</id>
<phase>process-resources</phase>
<configuration>
<executable>${npm.executable}</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
(...)
</plugins>
</build>
<profiles>
<profile>
<id>platform-windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<!-- Override the executable names for Windows -->
<npm.executable>npm.cmd</npm.executable>
<grunt.executable>grunt.cmd</grunt.executable>
<bower.executable>bower.cmd</bower.executable>
</properties>
</profile>
</profiles>
答案 1 :(得分:6)
在Windows平台中,使用 npm.cmd 替换 npm
答案 2 :(得分:1)
显然你在Windows系统上。 npm是批处理文件,不是可执行文件。有issues运行来自maven exec插件的批处理文件。您可能想要探索链接中建议的变通方法,例如
答案 3 :(得分:0)
请参阅链接了解详情:https://stackoverflow.com/a/48184182/4282901
在安装节点的目录中重命名批处理文件,以便选择现有的npm.cmd文件。见下面的截图:
如果您构建针对linux和windows两者的项目,则此方法更为可取。而且,如果没有。 pom文件也很大。
答案 4 :(得分:-2)
在Windows上将其重新命名为npm.sh对我有用。
Windows搜索了“ npm”,但没有找到, 然后尝试存在的npm.bat