AS Gradle task構建失敗CompilationFailedException解決

問題

在編譯運行項目時,會提示一些Task的錯誤,但並沒有列出錯誤的具體原因。我們無法根據已有的提示找出錯誤所在。如下:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':module-risk-control:compileDebugJavaWithJavac'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.
.......
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
.......
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
	... 32 more

根據報錯內容,可以看出是執行compileDebugJavaWithJava任務時報錯的錯誤。異常爲:TaskExecutionException(任務執行錯誤)並被告知編譯失敗異常(CompilationFailedException)。那麼這個所謂的任務又是什麼呢?它其實是Gradle構建工程的任務。我們從Android Studio右邊欄打開gradle,可以看到有很多的任務。這一點和maven很相似,如下:

image

解決方案

我們可以使用gradlew命令在命令行中來單獨執行報錯的那個任務,並打印出具體錯誤,命令如下:

gradlew tasknmae --stacktrace --info

在Mac下gradlew前需要加./

./gradlew tasknmae --stacktrace --info

那麼在本例中,報錯的taskName爲compileDebugJavaWithJavac,則敲入命令

./gradlew compileDebugJavaWithJavac --stacktrace --info

運行後就會看到具體錯誤,如下:

image
可以看到,是我們在使用ARouter框架時產生的錯誤。最後問題定位到:使用阿里路由組件時,定義路徑時,不能使用"-"。將項目中

    /**
     * 風控模塊路由
     */
    public static final String ROUTE_RISK_CONTROL = "/risk-control/main";

改爲

    /**
     * 風控模塊路由
     */
    public static final String ROUTE_RISK_CONTROL = "/risk/control/main";

這樣就好了

其他

在Mac中,如果使用gradlew找不到命令,可以先輸入命令

chmod +x gradlew
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章