gradle で grunt を実行するのに問題があります。私はWindowsとcygwinを使用しており、うなり声は明らかにパスにあります:
depressio@depressio /cygdrive/c/dev/project
$ which grunt
/cygdrive/c/Users/depressio/AppData/Roaming/npm/grunt
だから、私はこのgradleタスクを作ります:
task execGrunt(type: Exec) {
workingDir './ui'
commandLine 'grunt'
}
十分に単純です。ただし、実行すると、次の例外が発生します。
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'grunt''
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:195)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:325)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:90)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
Caused by: java.io.IOException: Cannot run program "grunt" (in directory "C:\dev\project\ui"): CreateProcess error=2, The system cannot find the file specified
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:71)
... 1 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
... 2 more
何故ですか?自分自身に行くと./ui
、grunt を問題なく実行できます (そこに grunt.js があります)。
私が見つけたいくつかの提案では、commandLine
as'cmd', '/c', 'grunt'
を定義していますが、代わりにエディターで grunt.js を開くだけです。また、これは UNIX では機能しません。このタスクは、PATH が正しく設定されている限り、Windows (cygwin) と UNIX の両方で機能することを望みます。
明らかに、私は何かが欠けています。
アップデート:
これは UNIX では機能しませんが'grunt.cmd'
、単に'grunt'
. これもうまくいきませんでしたが、別のスタック トレースが得られました。
Caused by: org.gradle.process.internal.ExecException: Process 'command 'grunt.cmd'' finished with non-zero exit value 3
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:363)
at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:39)
at org.gradle.api.tasks.Exec.exec(Exec.java:66)
(他にもたくさんありますが、これは最も低い「原因」です)
ただし、私のcoffeescriptがjsにコンパイルされ、次の行が表示されたという事実によって証明されています。Running "clean:0" (clean) task