Angularjs 在Windows上使用Ant脚本运行npm、ng命令;系统找不到指定的文件";错误

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

当我尝试运行以下Ant脚本时,它执行“npm”命令:

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