как мне контролировать, где находятся файлы и папки gradle/gradlew

В новом проекте, в котором я использую gradle/gradlew, я хочу установить расположение различных файлов и папок gradle/gradlew на нечто отличное от поведения по умолчанию.

Я говорю о:

  • gradle папки с оболочкой подпапки (содержащей gradle-wrapper.jar и gradle-wrapper.properties
  • папка build с подпапками «classes», «dependency-cache», «libs», «resources», содержащими все виды xml-файлов из отдельных компонентов, и «tmp», имеющим подпапки «compileJava» и «jar».

Но как и где мне это настроить?


person Pierre Smits    schedule 11.07.2016    source источник
comment
Почему вы хотите измениться? Помните, его соглашение по конфигурации. Чего именно вы пытаетесь достичь?   -  person MojoJojo    schedule 11.07.2016
comment
Вы правы: это соглашение по конфигурации. Но соглашение (назовем это политикой компании, определяющей соглашение в этом сценарии). Таким образом, значение по умолчанию не может быть применено.   -  person Pierre Smits    schedule 12.07.2016
comment
Мне интересно, как еще может быть установленное соглашение для Wrapper. Большинство других инструментов сборки не поддерживают Wrapper. Maven только недавно добавил один. Это значительно усложнит понимание сборки для любого новичка в проекте, если будут изменены соглашения по умолчанию.   -  person Benjamin Muschko    schedule 15.07.2016
comment
Соглашение действительно раздражает в сочетании с автозаполнением оболочки. Без оболочки я могу ввести grad[tab], и он автоматически дополнится до gradle (включая завершающий пробел), и я наберу остальную часть своей команды. С оболочкой я набираю ./gra[tab], и она автоматически дополняется до ./gradle, которая не является оболочкой, это папка, в которой находится оболочка, поэтому я должен нажать w после вкладки, прежде чем вводить какие-либо параметры. Возможность переименовать папку gradle была бы очень кстати.   -  person rjmunro    schedule 20.01.2021


Ответы (1)


Вы можете изменить расположение файла оболочки и свойств, настроив задачу типа Оболочка. Например:

task wrapper(type: Wrapper) {
    jarFile = file('mywrapper/wrapper.jar')
}

Запуск gradle wrapper создаст следующие файлы:

.
├── build.gradle
├── gradlew
├── gradlew.bat
└── mywrapper
    ├── wrapper.jar
    └── wrapper.properties

Выходной каталог сборки по умолчанию можно изменить с помощью метода Project.setBuildDir(Object). Например:

buildDir = file('target')
person Benjamin Muschko    schedule 12.07.2016
comment
Привет Бенджамин. Спасибо за время, чтобы ответить на вопрос: у меня есть небольшой дополнительный вопрос: как мне убедиться, что загруженные внешние библиотеки загружаются в папку внутри моего проекта, а не в скрытый каталог в каталоге пользователя? - person Pierre Smits; 13.07.2016
comment
Gradle загружает зависимости в локальный кеш в доме пользователя Gradle (по умолчанию ~/.gradle). Кэш распределяется между проектами. Если вы измените дом пользователя Gradle на каталог проекта, вам придется изменить его для каждого проекта. Это негативно повлияет на производительность вашей сборки, так как загруженные зависимости и обертки больше нельзя будет использовать совместно. - person Benjamin Muschko; 15.07.2016
comment
Я понимаю, что это создает уникальный набор для каждого проекта, но это требуется в процессе развертывания серверов UAT и PROD, которые ориентированы на максимальное время безотказной работы и производительность. - person Pierre Smits; 17.07.2016
comment
Я не понимаю аргумент и его актуальность для дома пользователя Gradle. Вы можете уточнить? - person Benjamin Muschko; 18.07.2016