gpt4 book ai didi

Ant 使用 exec 目标编译 Coffee 脚本

转载 作者:行者123 更新时间:2023-12-01 12:43:11 25 4
gpt4 key购买 nike

我有一个使用一些 Coffee Script 的 Ant 项目。我希望 Ant 编译所有的咖啡,而不是使用另一个构建步骤来编译它。我想要使​​用的咖啡命令行脚本,它将所有咖啡文件编译为同义的 js 文件(site.coffee 编译为 site.js,app.coffee 编译为 app.js):

coffee -c ./js/*.coffee

我创建了一个 Ant 任务,我假设它会运行相同的命令,但收到错误:

<target name="compilecoffee" description="Compiles coffeescript files">
<exec executable="coffee">
<arg value="-c ${env.WORKSPACE}js/*.coffee" />
</exec>
</target>

现在,当我运行 antcompilecoffee -Denv.WORKSPACE=./ 时,我从 Coffee 中收到以下错误:

Buildfile: /Users/dave/Workspace/ColdFusion/Mura-Themes/e123-1/build.xml

compilecoffee:
[exec]
[exec] node.js:116
[exec] throw e; // process.nextTick error, or 'error' event on first tick
[exec] ^
[exec] Error: unrecognized option: -c ./js/3_site.coffee
[exec] at OptionParser.parse (/Users/dave/local/lib/node/.npm/coffee-script/1.1.1/package/lib/optparse.js:34:17)
[exec] at /Users/dave/local/lib/node/.npm/coffee-script/1.1.1/package/lib/command.js:245:29
[exec] at Object.run (/Users/dave/local/lib/node/.npm/coffee-script/1.1.1/package/lib/command.js:24:5)
[exec] at Object.<anonymous> (/Users/dave/local/lib/node/.npm/coffee-script/1.1.1/package/bin/coffee:7:27)
[exec] at Module._compile (module.js:373:26)
[exec] at Object..js (module.js:379:10)
[exec] at Module.load (module.js:305:31)
[exec] at Function._load (module.js:271:10)
[exec] at Array.<anonymous> (module.js:392:10)
[exec] at EventEmitter._tickCallback (node.js:108:26)
[exec] Result: 1

如果我运行,我认为直接在命令行运行咖啡等效项(coffee -c ./js/*.coffee),我不会收到任何错误,一切都按预期进行。我使用的 exec 目标是否错误?

最佳答案

尝试=

<arg line="-c ${env.WORKSPACE}js/*.coffee" />

或者对命令的每一部分使用一个参数值=...

<target name="compilecoffee" description="Compiles coffeescript files">
<exec executable="coffee">
<arg value="-c"/>
<arg value="${env.WORKSPACE}js/*.coffee" />
</exec>
</target>

咖啡可执行文件必须位于路径上或使用=

<exec executable="full/path/to/coffee">

编辑

正如 Dominic 指出的,“*”不会被扩展,所以你应该使用 apply =

 <apply executable="coffee">
<arg value="-c"/>
<fileset dir="${env.WORKSPACE}js" includes="**/*.js"/>
</apply>

参见Ant Manual apply task FE您可以使用parallel="true",表示仅运行该命令一次,将所有文件作为参数附加,如果可能的话使用咖啡,以加快速度。

关于Ant 使用 exec 目标编译 Coffee 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com