Может ли Gradle действительно убить Maven? Сегодня попробовал, круто!

Java задняя часть
Может ли Gradle действительно убить Maven? Сегодня попробовал, круто!

Адрес фактического центра электронной коммерции SpringBoot (40k+star):GitHub.com/macro-positive/…

Резюме

Многие друзья используют Maven в качестве инструмента для разработки Web-приложений на Java. Как инструмент сборки, активно поддерживаемый Google, Gradle широко используется в разработке для Android и имеет тенденцию заменять Maven в Java Web. Действительно ли Gradle такой ароматный? Сегодня мы приходим, чтобы испытать один из них с моим проектом строительных лесов.mall-tinyНапример, посмотрите, работает ли Gradle!

Введение в Gradle

Gradle — гибкий и производительный инструмент автоматической сборки с открытым исходным кодом.Для написания скриптов сборки можно использовать Groovy или Kotlin DSL. От мобильной разработки до микросервисов, от небольших команд до крупных предприятий — Gradle повышает продуктивность разработчиков.

Gradle имеет следующие особенности:

  • Широкие возможности настройки: Gradle использует настраиваемый, расширяемый способ моделирования и очень гибкий.
  • Быстрые сборки: Gradle быстро завершает сборки, повторно используя выходные данные предыдущих выполнений, обрабатывая только измененные входные данные и выполняя задачи параллельно.
  • Мощный: Gradle является официальным инструментом сборки для Android и поддерживает множество популярных языков и технологий.

Gradle опыт

Далее выложу свой проект строительных лесовmall-tinyОт использования Maven до использования Gradle, испытайте использование Gradle.

Создать Gradle-проект

  • В первую очередь необходимо скачать установочный пакет Gradle.Рекомендуется скачивать полную версию с исходным кодом (иначе в атрибуте Gradle не будет комментариев).Адрес для скачивания:gradle.org/releases/

  • После завершения загрузки разархивируйте его, а затем создайте проект SpringBoot в IDEA;

  • Выберите создание проекта Gradle;

  • Затем выберите версию Gradle, которую мы загрузили ранее, и войдите в каталог, который вы распаковали;

  • После создания проекта очень простая структура каталогов проекта Gradle выглядит следующим образом, следует отметить, чтоbuild.gradleиsettings.gradleэти два файла.

Знакомство с плагином Gradle

во вновь созданномbuild.gradleВ файле мы можем найти следующие 3 плагина:

plugins {
    id 'org.springframework.boot' version '2.3.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

org.springframework.boot

Плагин Gradle, официально предоставленный SpringBoot, удобен для использования SpringBoot путем измененияversionМожет контролировать используемую версию SpringBoot.

io.spring.dependency-management

Плагин Gradle (похожий на Maven), который обеспечивает управление версиями зависимостей.

Например, когда мы раньше использовали Maven для управления версией Druid, мы сначала<dependencyManagement>Версия зависимости определяется в .

<dependencyManagement>
    <dependencies>
        <!--集成druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>
</dependencyManagement>

Тогда вам не нужно заполнять номер версии при введении зависимостей, преимущество этого в том, что вы можете унифицировать версии зависимостей.

<dependencies>
    <!--集成druid连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

В Gradle вы можете использовать это так, не правда ли, это намного проще!

dependencies {
    implementation 'com.alibaba:druid-spring-boot-starter'
}

dependencyManagement {
    dependencies {
        dependency 'com.alibaba:druid-spring-boot-starter:1.1.10'
    }
}

java

Плагин Java добавляет в проект общие функции, такие как компиляция Java, тестирование и т. д., и является основой для многих других плагинов Gradle для языка JVM.

Maven в Gradle

Преобразование проекта Maven в Gradle очень просто, просто введитеpom.xmlЗависимости вbuild.gradleзависимости в .

  • Например, зависимость Hutool написана на Maven так:
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.5.7</version>
</dependency>
  • Запись в Gradle выглядит так, и это можно сделать одной строкой:
dependencies {
    implementation 'cn.hutool:hutool-all:4.5.7'
}
  • Иногда Gradle загружает зависимости медленно, поэтому изменение URL-адреса на адрес репозитория Maven в Alibaba Cloud может ускорить загрузку;
repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    mavenCentral()
}
  • другой полныйbuild.gradle, добавлены все зависимости;
plugins {
    id 'org.springframework.boot' version '2.3.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.macro.mall.tiny'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-aop'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-configuration-processor'
    implementation 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    implementation 'com.alibaba:druid-spring-boot-starter'
    implementation 'mysql:mysql-connector-java'
    implementation 'io.springfox:springfox-swagger2'
    implementation 'io.springfox:springfox-swagger-ui'
    implementation 'io.swagger:swagger-models'
    implementation 'io.swagger:swagger-annotations'
    implementation 'cn.hutool:hutool-all'
    implementation 'io.jsonwebtoken:jjwt'
    implementation 'com.baomidou:mybatis-plus-boot-starter'
    implementation 'com.baomidou:mybatis-plus-generator'
    implementation 'org.apache.velocity:velocity-engine-core'
}

dependencyManagement {
    dependencies {
        dependency 'com.alibaba:druid-spring-boot-starter:1.1.10'
        dependency 'mysql:mysql-connector-java:8.0.16'
        dependency 'io.springfox:springfox-swagger2:2.9.2'
        dependency 'io.springfox:springfox-swagger-ui:2.9.2'
        dependency 'io.swagger:swagger-models:1.6.0'
        dependency 'io.swagger:swagger-annotations:1.6.0'
        dependency 'cn.hutool:hutool-all:4.5.7'
        dependency 'io.jsonwebtoken:jjwt:0.9.0'
        dependency 'com.baomidou:mybatis-plus-boot-starter:3.3.2'
        dependency 'com.baomidou:mybatis-plus-generator:3.3.2'
        dependency 'org.apache.velocity:velocity-engine-core:2.2'
    }
}

test {
    useJUnitPlatform()
}
  • В конце концов, все, что вам нужно сделать, это скопировать исходный код, и преобразование Gradle завершено.

Сравните Maven

Говорят, что Gradle строит быстро, да и сам официал говорит, что мы попробуем собрать проект после очистки, чтобы посмотреть, насколько он быстр!

  • Сначала используйте предыдущий проект Maven, очистите его напрямую, затем упакуйте, упакуйте и соберите его;

  • Вывод консоли выглядит следующим образом, отнимает много времени32s;

  • Затем используйте текущий проект Gradle, который также упакован после очистки (команда bootjar используется в Gradle), упакован и собран;

  • Вывод консоли выглядит следующим образом, отнимает много времени15s, более чем в два раза быстрее!

  • Приведем еще одну официальную сравнительную таблицу: Gradle строит в два раза быстрее Maven, что вполне уместно!

Суммировать

Gradle, как официальный инструмент сборки, рекомендуемый Google, действительно хорош! Если вы можете писать скрипты на Groovy, это очень гибко в использовании, а синтаксис прост и быстр в построении!

использованная литература

Официальная документация Gradle:docs.gradle.org

Адрес исходного кода проекта

GitHub.com/macro-positive/…

Эта статьяGitHubGitHub.com/macro-positive/…Записано, приветствую всех на Star!