如何安裝gradle和gradlew?

如何安裝gradle和gradlew?

我在安裝 gradlew 時遇到問題...我只需在終端機中輸入“gradle”即可使用 gradle 命令,但“gradlew”不執行任何操作。我使用安裝了 gradle

sudo apt install gradle

而且安裝成功了。我必須使用“sudo gradle”而不是“gradle”,因為當我不使用 sudo 時會出現此情況。

icebunny08@D3CRYPT3D:~$ gradle
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.gradle.internal.reflect.JavaMethod (file:/usr/share/gradle/lib/gradle-base-services-3.4.1.jar) to method java.lang.ClassLoader.getPackages()
WARNING: Please consider reporting this to the maintainers of org.gradle.internal.reflect.JavaMethod
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Starting a Gradle Daemon (subsequent builds will be faster)
:help

Welcome to Gradle 3.4.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL

Total time: 5.017 secs

我的問題是,如果我正確安裝了 Gradle,為什麼我不能使用“gradlew”命令。這是我使用“gradlew”時的輸出。

icebunny08@D3CRYPT3D:~$ gradlew

Command 'gradlew' not found, did you mean:

  command 'gradle' from deb gradle

Try: sudo apt install <deb name>

答案1

在執行 gradle 命令時出現的警告是由於 JDK 9 或更高版本的一些常規問題造成的,如上所述這裡

如果這些警告對您來說是個問題,您可以使用所描述的解決方法使它們消失:

您可以將以下參數新增至 java bootstrap 腳本或 JAVA_OPTS 來抑制此警告:

--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED


現在關於 gradlew。

Gradlew 是 gradle 的包裝器。它綁定到一個項目,而不是您的工作站。換句話說,您開發的每個 gradle 專案都可能有一個 gradle 包裝器。 gradlew 的目的是使專案可移植(即開發人員不需要在他們的工作站上安裝 gradle)和可靠(即每個人都有相同版本的 gradle)。包裝器腳本將為您的專案下載指定版本的 gradle,然後運行它。這全部描述在他們的文檔

在您的案例中,您所做的就是在您的工作站上全域安裝 gradle。 gradle 安裝不附帶 gradlew,因為需要將 gradlew 添加到您選擇的每個 gradle 項目中,如上所述這裡。您只需在專案中執行以下命令:

gradle wrapper

這將為您的 gradle 專案建立包裝器腳本。顯然你需要安裝 gradle 才能運行這個命令(你已經安裝了),但是如果你提交結果並與其他開發人員共享,他們可以在不安裝 gradle 的情況下使用 gradlew 腳本。

就您而言,您最終有兩種可能性:

  • 在專案中執行 gradle 命令,例如gradle clean.您可以這樣做,因為您手動全域安裝了 gradle
  • 在專案中執行 gradlew 指令,例如gradlew clean.您可以執行此操作,因為您gradle wrapper首先建立了包裝器腳本。

如果 gradle 版本相同,兩者應該會給出相同的結果。

相關內容