Как включить в проект дистрибутив Gradle, который будет использоваться для оболочки

Я хочу включить определенную версию Gradle в папку проекта, чтобы при использовании оболочки Gradle она не загружалась из удаленного репозитория.

Я скачал нужную мне версию Gradle (gradle-4.0-bin.zip) и поместил этот zip в папку gradle/wrapper/ проекта (созданную с помощью команды gradle wrapper). Затем я отредактировал файл gradle-wrapper.properties следующим образом:

distributionUrl=file:///Users/pathj/to/the/project/gradle/wrapper/gradle-4.0-bin.zip

Но когда я запускаю первую команду, например gradle task, она возвращает:

  • Что пошло не так: возникла проблема при настройке корневого проекта «03-gradle-wrapper-local».
    #P4#

Как мне указать Gradle получить zip-файл из текущей папки проекта с относительным путем вместо его загрузки и использовать этот zip-файл для создания оболочки, которая будет использоваться в моих сборках?


person acejazz    schedule 10.11.2017    source источник
comment
Почему? Просто почему? Затем вам нужно будет сохранить этот большой zip-файл в вашем репозитории git и заставить каждого разработчика загружать его из репозитория git (вместе с каждой предыдущей версией, которую вы сохранили), вместо того, чтобы использовать свою собственную локальную копию.   -  person JB Nizet    schedule 10.11.2017
comment
Здравствуйте, Джей Би Низе. Ну нет почему. Я просто просматриваю документацию Gradle и провожу некоторые эксперименты. Поскольку в документации сказано: если вы не хотите, чтобы какая-либо загрузка происходила, когда ваш проект создается с помощью gradlew, просто добавьте ZIP-файл дистрибутива Gradle в свой контроль версий в место, указанное вашей конфигурацией Wrapper. Я хотел попробовать это. Если это есть в документации, возможно, там есть какой-то практический пример использования :)   -  person acejazz    schedule 10.11.2017


Ответы (1)


Помимо локального хранения оболочки Gradle, имеет смысл или нет. Я предполагаю, что используется gradle-4.0-rc-3-bin дистрибутив.

Вот структура проекта:

.
├── gradle
│   └── wrapper
│       ├── gradle-4.0-rc-3-bin.zip
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat

А вот содержание gradle-wrapper.properties:

distributionBase=PROJECT
distributionPath=gradle
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=gradle-4.0-rc-3-bin.zip

Поскольку файлы-оболочки будут загружены в каталог проекта, рекомендуется добавить gradle/gradle-4.0-rc-3-bin в файл игнорирования SCM.

Демонстрацию можно найти здесь.

person Opal    schedule 10.11.2017
comment
Из документации: Если вы не хотите, чтобы какая-либо загрузка происходила, когда ваш проект создается с помощью gradlew, просто добавьте ZIP-файл дистрибутива Gradle в свой контроль версий в место, указанное вашей конфигурацией Wrapper. так что я предполагаю, что включение дистрибутива в SCM имеет некоторую пользу. - person acejazz; 10.11.2017
comment
@acejazz, я не осуждаю. Я просто имел в виду комментарий JB Nizet. - person Opal; 10.11.2017
comment
ох, хорошо. Я неправильно понял. :) Я пытался использовать ваше решение, но оно не работает, - person acejazz; 10.11.2017
comment
@acejazz на самом деле работает хорошо. Скопируйте всю папку и запустите ./gradlew. Какие ошибки вы получаете? - person Opal; 10.11.2017
comment
Файл gradle-wrapper.properties: DistributionBase=PROJECT DistributionPath=gradle zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists DistributionUrl=gradle-4.0-bin.zip Ошибка вот в чем: что пошло не так: возникла проблема при настройке корневого проекта «Завершить 03-градусная обертка-локальная». › java.io.FileNotFoundException: /Users/myself/.gradle/wrapper/dists/gradle-4.0-bin/3p92xsbhik5vmig8i90n16yxc/gradle-4.0/lib/plugins/gradle-diagnostics-4.0.jar (нет такого файла или каталога) - person acejazz; 10.11.2017
comment
Ваш вариант действительно работает. Я постараюсь увидеть различия между вашим и моим. Большое спасибо! - person acejazz; 10.11.2017
comment
@acejazz, конечно. Дайте мне знать, если вы решили это, наконец. - person Opal; 10.11.2017
comment
это сработало! Проблема заключалась в том, что в сценарии я вызывал gradle wrapper до фактического вызова ./gradlew, и поэтому файл свойств был переопределен. Благодарю вас! P.S. Есть ли способ настроить файл свойств для этой цели из сценария сборки? - person acejazz; 10.11.2017
comment
Прохладно. Честно говоря, я не знаю. - person Opal; 10.11.2017