Gradle — система автоматичного збирання, яка далі розвиває принципи, закладені в Apache Ant та Apache Maven і використовує предметно-орієнтовану мову (DSL) на основі мови Groovy замість традиційної XML-подібної форми представлення конфігурації проєкту. Для визначення порядку виконання завдань Gradle використовує орієнтований ациклічний граф ("DAG").

Gradle
Тип система складанняd
Розробники Gradle Inc.d, Adam Murdochd[1], Daz DeBoerd[2] і Bo Zhangd[2]
Перший випуск 21 квітня 2008; 16 років тому (2008-04-21)
Стабільний випуск 8.0 (13 лютого 2023; 15 місяців тому (2023-02-13))
Платформа віртуальна машина Java
Операційна система кросплатформова програма
Мова програмування Java, Groovy[3] і Kotlin
Ліцензія Apache License, Version 2.0[d][4]
Репозиторій github.com/gradle/gradle
Вебсайт gradle.org

На відміну від Apache Maven, заснованого на концепції життєвого циклу проєкту, і Apache Ant, в якому порядок виконання задач (targets) визначається відношеннями залежності (depends-on), Gradle використовує спрямований ациклічний граф для визначення порядку виконання завдань.

Gradle було розроблено для побудови мультипроєктів, які можуть розростатися, і підтримує інкрементальне збирання. Вона визначає, які частини було змінено, і виконує тільки ті задачі, які залежать від цих частин.

Основні плагіни призначені для розробки і розгортання Java, Groovy і Scala додатків, але готуються плагіни і для інших мов програмування.

Приклад проєкту для Java

ред.

Розглянемо приклад проєкту, в якому використовується стандартна структура каталогів Maven для вихідних кодів і ресурсів. Така структура містить наступні каталоги:

  • src/main/java,
  • src/main/resources,
  • src/test/java,
  • src/test/resources.

build.gradle

apply plugin: 'java'

Результат виконання команди gradle build для збірки проєкту

> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Java плагін емулює життєві цикли Maven, у вигляді завдань в спрямованому ациклічному графі залежностей для входів і виходів кожного завдання. У цьому прикладі виконання завдання build залежить від результату виконання завдань check і assemble. Також завдання check залежить від test, а assemble від jar.

Gradle також дозволяє використовувати для проєктів структуру каталогів, що відрізняється від конвенції Maven. У наступному прикладі буде розглянуто проєкт, в якому вихідний код знаходиться в каталозі src / java, а не в src / main / java.

build.gradle

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDirs = ['src/java']
        }
    }
}

Посилання

ред.
  1. а б https://github.com/gradle/gradle/graphs/contributors?from=2008-03-09&to=2023-01-25&type=c
  2. а б https://github.com/gradle/gradle/graphs/contributors?from=2008-03-09&to=2023-01-25&type=a
  3. The gradle Open Source Project on Open Hub: Languages Page — 2006.
  4. The gradle Open Source Project on Open Hub: Licenses Page — 2006.