【问题标题】:Ant build executes cordovaAnt build 执行cordova
【发布时间】:2013-10-10 01:53:49
【问题描述】:

我为我的 cordova 项目创建了一个 ant 构建,如下所示:

<project default="build">
    <target name="init-android">
        <exec executable="cordova">
            <arg value="platform"/>
            <arg value="add"/>
            <arg value="android"/>
        </exec>
        <exec executable="cordova">
            <arg value="build"/>
        </exec>
    </target>
</project>

但是我收到了这个错误:

C:\path_to_project\build.xml:3: 执行失败: java.io.IOException: 无法运行程序“cordova”:CreateProcess error=2,系统无法运行 找到指定的文件 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 在 java.lang.Runtime.exec(Runtime.java:615) 在 org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav a13CommandLauncher.java:41)

我可以在命令提示符下毫无问题地运行cordova命令,我有:

JAVA_HOME = C:/Program Files/Java/jdk1.7.0_10/ ANT_HOME = C:\Program Files\Java\apache-ant-1.9.2 NODEJS_HOME = C:\Program Files\nodejs

他们都在我的路上。我不明白为什么它不起作用。请帮忙。谢谢

【问题讨论】:

    标签: windows cordova ant


    【解决方案1】:

    通常在使用 Java 应用程序在 Windows 中启动程序时,我经常必须执行 cmd.exe 并将其传递给我实际想要运行的程序的完整路径。这允许以您期望的方式设置系统环境变量等。试试这个:

    <project default="build">
        <target name="init-android">
            <exec executable="cmd.exe">
                <arg value="/C"/>
                <arg value="cordova"/>
                <arg value="platform"/>
                <arg value="add"/>
                <arg value="android"/>
            </exec>
            <exec executable="cmd.exe">
                <arg value="/C"/>
                <arg value="cordova"/>
                <arg value="build"/>
            </exec>
        </target>
    </project>
    

    如果这仍然不起作用,请给出科尔多瓦的完整路径。如果您定义了一个环境变量,那么它应该可以工作。

    【讨论】:

    • 谢谢。它有效,但为什么我的代码不起作用?我的路一定有问题?
    • 我无法再回忆起问题的根源,但由于某种原因,环境属性不会像您期望的那样传递传递。但是,调用 cmd.exe 会导致所有环境属性都被加载,然后您就可以开始比赛了。
    • 为了跨平台兼容 - 添加 osfamily 属性
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 2013-05-26
    • 2013-10-29
    • 1970-01-01
    • 2019-08-05
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多