У меня проблема с установкой 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 или JAVA_OPTS:
--add-opens=java.base/java.lang=ВСЕ-БЕЗИМЕННЫЕ --add-opens=java.base/java.lang.invoke=ВСЕ-БЕЗИМЕННЫЕ
Теперь о градлеве.
Gradlew — это оболочка вокруг gradle. Она привязана к проекту, а не к вашей рабочей станции. Другими словами, каждый проект gradle, который вы разрабатываете, может иметь оболочку gradle, поставляемую вместе с ним. Цель gradlew — сделать проект переносимым (т. е. разработчикам не нужно устанавливать gradle на свою рабочую станцию) и надежным (т. е. одна и та же версия gradle для всех). Скрипт оболочки загрузит указанную версию gradle для вашего проекта, а затем запустит ее. Все это описано вих документация.
В вашем случае вы установили Gradle на своей рабочей станции глобально. Установка Gradle не идет с Gradlew, так как Gradlew необходимо добавить в каждый проект Gradle по вашему выбору, как описаноздесь. Вам просто нужно выполнить следующую команду в вашем проекте:
gradle wrapper
Это создаст скрипт-обертку для вашего проекта gradle. Очевидно, что для запуска этой команды вам нужно установить gradle (вы уже установили его), но если вы зафиксируете результат и поделитесь им с другими разработчиками, они смогут использовать скрипт gradlew без установки gradle.
В вашем случае у вас есть две возможности:
- запустите команды gradle в своем проекте, например
gradle clean
. Вы можете сделать это, поскольку вы вручную установили gradle глобально - запустите команды gradlew в своем проекте, например
gradlew clean
. Вы можете сделать это, поскольку вы создали скрипт-оберткуgradle wrapper
в первую очередь.
Оба варианта должны дать одинаковый результат, если версия Gradle одинакова.