После использования Gradle мне немного не нравится Maven! Скорость вор быстро!

задняя часть gradle
После использования Gradle мне немного не нравится Maven! Скорость вор быстро!

Это 25-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Я считаю, что студенты, которые используют Java, использовали Maven, который является очень классическим и простым в использовании инструментом построения проекта. Но если вы часто используете Maven, вы можете обнаружить, что в некоторых местах Maven неудобен:

1. Файл конфигурации Maven имеет формат XML.Если ваш проект зависит от множества пакетов, файл XML станет очень и очень длинным;

2. XML-файлы не очень гибкие, если вам нужно добавить какую-то пользовательскую логику в процессе построения, это будет очень хлопотно;

3. Maven очень стабилен, но у него недостаточная поддержка новой версии java.Даже если он будет компилировать java11, встроенный плагин Maven нуждается в обновлении. Если вы чувствуете эти недостатки Maven и готовы попробовать другие инструменты сборки, вы можете попробовать gradle, совершенно новый инструмент сборки Java, который решает некоторые болевые точки Maven.

1. Установите Грейдл

Самый традиционный метод установки — перейти на официальный сайт gradle, загрузить бинарный пакет, разархивировать его, а затем добавить путь к переменной среды. Если у вас нет других потребностей, вы можете использовать этот метод установки. Тем не менее, gradle — очень модный проект, и каждые несколько месяцев выпускается новая версия, которая может не поспевать за скоростью обновления gradle.

Поэтому я рекомендую использовать менеджер пакетов для установки gradle. Если вы используете систему Linux, то, разумеется. Если вы работаете в Windows, я рекомендую использовать диспетчер пакетов scoop для установки gradle. Его легко установить, он использует каталог SHIM для управления переменными среды, и его легко настроить в различных инструментах.

Конечно, если вам совсем не нравится устанавливать такой беспорядок, вы также можете использовать gradle. gradle предоставляет инструмент, называемый оболочкой gradle, для использования gradle без установленного gradle.

Ну, на самом деле это файл скрипта.Когда вы запускаете скрипт-оболочку, если скрипт обнаружит, что на вашем компьютере нет Gradle, он автоматически загрузит и установит его для вас. Существует даже оболочка Maven, файл сценария, который автоматически устанавливает Maven.

Я считаю, что некоторые друзья слышали о Gradle раньше, а затем пытались его использовать, но в конце концов сдались, потому что скорость была слишком низкой. Я также на некоторое время отказался от Gradle из-за его скорости. Но теперь гораздо удобнее использовать gradle. Gradle официально открыт в Китае, CDN, и скорость загрузки очень высока при использовании оболочки gradle. Можно сказать, что сейчас самое время научиться использовать gradle.

2. Используйте обертку Gradle

Здесь я использую IDEA для создания и использования проектов gradle.

IDEA по умолчанию использует оболочку gradle для создания проектов, поэтому она может нормально работать без установки gradle. На данный момент структура проекта должна быть аналогична той, что показана на рисунке ниже, и учащиеся, использующие Maven, должны быть с ней знакомы, поскольку она почти полностью совпадает со структурой проекта Maven.

Файлы в папке gradle и gradlew — это файлы-оболочки gradle, а файлы с суффиксом .gradle — это файлы конфигурации gradle, соответствующие pom.xml Maven.

Одним из преимуществ Gradle Wrapper является то, что вы можете настроить версию Gradle, которую вы загружаете.Если это совместная работа в команде, эта функция очень удобна.Простые настройки могут унифицировать версию инструмента сборки команды.

Здесь я установил последнюю версию Gradle 6.4, Загрузка и установка по умолчанию — это версия bin, которая содержит только двоичный файл. Если вы используете IDEA, он порекомендует загрузить всю версию, включая исходный код, чтобы IDEA могла проанализировать исходный код и предоставить более точную поддержку сценариев Gradle.

3. Управление зависимостями

Давайте взглянем на функцию управления зависимостями Gradle, которая является одной из основных целей использования инструментов сборки. Это также одно из преимуществ Gradle перед Maven. По сравнению с обширной XML-конфигурацией maven, для зависимостей gradle требуется только одна строка.

dependencies {

testImplementation 'junit:junit:4.13'
implementation 'com.google.code.gson:gson:2.8.6'

} Здесь мы рекомендуем веб-сайт поиска пакетов Jetbrains, который является лучшим веб-сайтом для поиска зависимостей maven и gradle, который может легко искать и использовать зависимости.

Детальный контроль над зависимостями gradle также более совершенен, чем у Maven.Maven имеет только четыре области: компиляция, предоставление, тестирование и среда выполнения, а gradle имеет следующие области:

1.реализация, область действия по умолчанию. Область реализации делает зависимости включенными во время компиляции и во время выполнения, но не раскрываются во время компиляции пользователем библиотеки классов. Например, если наша библиотека классов включает gson, то, когда другие будут использовать нашу библиотеку классов, во время компиляции не будет зависимости от gson.

2.api, как и реализация, является зависимостью, видимой как во время компиляции, так и во время выполнения. Но API позволяет нам раскрывать зависимости нашей библиотеки пользователям нашей библиотеки.

3.compileOnly и runtimeOnly, как следует из названий, один виден только во время компиляции, а другой виден только во время выполнения. А runtimeOnly и Maven относительно близки.

4.testImplementation, эта зависимость видна во время компиляции теста и во время выполнения, аналогично области теста Maven.

5.testCompileOnly и testRuntimeOnly, эти два похожи на compileOnly и runtimeOnly, но воздействуют на время компиляции теста и время выполнения. Благодаря краткой и лаконичной настройке зависимостей и множеству функций и опций Gradle может предоставить нам лучшие функции управления зависимостями, чем Maven.

В-четвертых, задачи градации и плагины

Файл конфигурации gradle — это файл скрипта groovy, в котором мы можем программно настроить некоторые задачи сборки. Это дает нам большую гибкость и удобство благодаря программному подходу.

Например, теперь есть необходимость проверять размер jar-файла при упаковке jar. В Gradle просто напишите несколько строк кода в скрипте сборки. В Maven нужно писать Maven-плагин, а сложность совсем другая.

Конечно, Maven развился до настоящего времени, и уже существует большое количество плагинов, предоставляющих разнообразные функции, которые можно использовать. Но он все еще не может сравниться с Gradle с точки зрения гибкости.

Более того, у Gradle тоже есть функция плагина, и она сейчас очень быстро развивается, есть большое количество очень полезных плагинов, например плагин gretty. Первоначально Gretty был подключаемым модулем сообщества, а позже официально стал официальным подключаемым модулем.Он может запускать веб-проекты на серверах Tomcat и jetty и является более мощным, чем связанные с Maven подключаемые модули.

Хотя Gradle может очень гибко писать пользовательские задачи сценариев, в целом нам не нужно писать сценарии сборки, и мы можем использовать существующие плагины и задачи для выполнения связанных функций. В IDEA вы также можете легко просмотреть, сколько задач находится в текущем проекте Gradle.Основные задачи, такие как сборка, тестирование и т. д. Maven и Gradle одинаковы.

Пять, настроить зеркало

Скорость загрузки официального репозитория Maven очень низкая, поэтому, как правило, нам нужно настроить внутренние источники зеркал. В этом отношении Gradle полностью совместим с Maven, поэтому с небольшой настройкой источника зеркала вы можете использовать зеркало Maven.

Если вы построили проект с помощью Gradle, вы сможете увидеть конфигурацию и кеш, связанные с Gradle, в папке .gradle пользовательского каталога. Gradle, загруженный оболочкой, также хранится в этой папке, а расположение — wrapper/dists.

Локальный кеш зависимостей находится в папке caches\modules-2\files-2.1. Структура каталогов аналогична локальному кешу Maven в виде имени пакета + номера версии, но последний уровень структуры каталогов gradle отличается от Maven, что делает их неспособными совместно использовать локальный кеш.

Ближе к дому, чтобы настроить загрузку образа в gradle, нужно создать скрипт инициализации init.gradle прямо в папке .gradle.Содержимое файла скрипта следующее. Таким образом, когда gradle загружает зеркало, он будет использовать источник зеркала, настроенный здесь для загрузки, и скорость будет намного выше. В сочетании с оберткой Gradle, настраивающей CDN в Китае, скорость использования Gradle должна быть очень высокой.

allprojects {
   repositories {
       maven {
           url "https://maven.aliyun.com/repository/public"
       }
       maven {
           url "https://maven.aliyun.com/repository/jcenter"
       }
       maven {
           url "https://maven.aliyun.com/repository/spring"
       }
       maven {
           url "https://maven.aliyun.com/repository/spring-plugin"
       }
       maven {
           url "https://maven.aliyun.com/repository/gradle-plugin"
       }
       maven {
           url "https://maven.aliyun.com/repository/google"
       }
       maven {
           url "https://maven.aliyun.com/repository/grails-core"
       }
       maven {
           url "https://maven.aliyun.com/repository/apache-snapshots"
       }
   }
}

Конечно, если у вас есть прокси, я действительно рекомендую вам установить глобальный прокси непосредственно для gradle. Поскольку сценарии Gradle настолько гибкие, некоторые сценарии могут зависеть от удаленных сценариев из github или других мест. В настоящее время указанный выше зеркальный источник загрузки не будет работать.

Поэтому лучше использовать глобальный прокси напрямую, если есть условия. Метод настройки очень прост: создайте новый файл gradle.properties в папке .gradle со следующим содержимым. Несколько средних строк — это элементы конфигурации для настройки прокси.

Конечно, я также рекомендую вам установить другие строки и установить кодировку файла среды выполнения gradle на UTF8, чтобы повысить кроссплатформенную совместимость.

org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=10800
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10800
systemProp.file.encoding=UTF-8
org.gradle.warning.mode=all

6. Зачем использовать градиент?

Увидев это, вы должны иметь базовое представление о gradle, и вы также можете использовать его в своем проекте. Но если вы уже хорошо знакомы с Maven, вы можете не захотеть использовать gradle, потому что это кажется ненужным. Но раз уж появился gradle, значит, у многих до сих пор есть определенное мнение о Maven.

Итак, здесь я подытожу преимущества gradle над maven.

1. Скорость, gradle использует кеш сборки, демон и другие методы для повышения скорости компиляции. В результате скорость компиляции gradle намного быстрее, чем у maven, а средняя скорость компиляции в несколько раз быстрее, чем у Maven, и чем больше проект, тем очевиднее этот разрыв.

2. Гибкость, gradle намного гибче, чем Maven, хотя иногда гибкость не очень хорошая вещь. Но в большинстве случаев гибкость может значительно облегчить нам жизнь. Жесткий XML-файл Maven неудобен.

Многие проекты Maven выполняют действия, требующие гибкости, за счет выполнения внешних сценариев. В gradle конфигурационный файл — это скрипт сборки, а скрипт сборки — это язык программирования (язык программирования groovy), который полностью самодостаточен без внешних скриптов.

3. Простота, для выполнения той же функции длина скрипта gradle намного меньше длины файла конфигурации maven. Хотя многие люди говорят, что поддержка XML не представляет проблем, я думаю, что поддержка файла XML с сотнями строк зависимостей не обязательно проще, чем скрипт gradle.

Может быть, по причинам, которые я назвал выше, может быть, есть и другие причины, я должен признать одну вещь: gradle широко используется как новый инструмент. Такие проекты, как Spring, перешли с Maven на Gradle.

Разработка программ для Android поддерживает только Gradle. Поэтому независимо от того, нужно ли вам сейчас переключать свой проект с maven на gradle, по крайней мере, изучение gradle — это необходимая вещь.​