我在運行grunt時遇到了一些麻煩。我使用的是Windows和Cygwin和呼嚕聲,顯然是在路徑:用gradle運行grunt
[email protected] /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
定義爲'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
你運行的gradle這個shell腳本或gradle.bat?如果您正在運行gradle.bat,則您的路徑可能不會從Cygwin路徑繼承。 – Jared
它使用shell腳本。雖然兩者都遇到了同樣的問題。 – Depressio