Angularjs 在Windows上使用Ant脚本运行npm、ng命令;系统找不到指定的文件";错误
当我尝试运行以下Ant脚本时,它执行“npm”命令:Angularjs 在Windows上使用Ant脚本运行npm、ng命令;系统找不到指定的文件";错误,angularjs,angular,typescript,ant,angular-cli,Angularjs,Angular,Typescript,Ant,Angular Cli,当我尝试运行以下Ant脚本时,它执行“npm”命令: <target name ="test"> <exec executable="npm" failonerror="true"> <arg value="install" /> </exec> </target> <target name ="test"> <exec executable="ng" failoner
<target name ="test">
<exec executable="npm" failonerror="true">
<arg value="install" />
</exec>
</target>
<target name ="test">
<exec executable="ng" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
当我尝试运行Angular CLI“ng”命令时,也会发生同样的情况:
<target name ="test">
<exec executable="npm" failonerror="true">
<arg value="install" />
</exec>
</target>
<target name ="test">
<exec executable="ng" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
这两个命令在Windows命令行中运行时都没有问题,这意味着NodeJS安装正确,并且NodeJS path在path系统变量中配置正确。我通过修改Ant脚本以指定“npm”可执行文件的全名(第二种情况下为“ng”命令)解决了问题: 我的新Ant脚本现在如下所示:
<target name ="test">
<exec executable="npm.cmd" failonerror="true">
<arg value="install" />
</exec>
</target>
<target name ="test">
<exec executable="ng.cmd" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
请注意,我使用了“npm.cmd”而不是“npm”,使用了“ng.cmd”而不是“ng”。
当我尝试在linux中运行时,它再次给出相同的错误,即
执行失败:java.io.IOException:无法运行程序“ng”
如何通过ANT在linux环境中运行我的解决方案与您的解决方案类似,只是调用了“npm build”,默认情况下它包含在package.json的“scripts”部分中 然后在我的ant build.xml文件中为生产构建引入了类似的目标,如下所示:
"scripts": {
"build": "ng build -bh /context/",
"buildprod": "ng build --prod --aot -bh /context/"
}
<target name="build_prod_windows">
<exec executable="npm.cmd" failonerror="true">
<arg value="run-script"/>
<arg value="buildprod"/>
</exec>
</target>
这样,您就可以在其他angular项目中保留相同的ant脚本,而不必担心在build.xml文件中保留不同的参数。相反你需要确保你的package.json有正确的脚本。直到明天我才被允许:)ng.cmd不使用maven-org.codehaus.mojo exec maven plugin 1.6.0 validate exec ng.cmd src/main/ui build这不是问题的答案这个问题。
"scripts": {
"build": "ng build -bh /context/",
"buildprod": "ng build --prod --aot -bh /context/"
}
<target name="build_prod_windows">
<exec executable="npm.cmd" failonerror="true">
<arg value="run-script"/>
<arg value="buildprod"/>
</exec>
</target>