Gradle

***Gradle*** ir programmatūras izstrādes projektu automatizācijas rīks, kas balstās uz *[[Apache Ant]]* un *[[Apache Maven]]* principiem un piedāvā *[[Groovy (programmēšanas valoda)|Groovy]]* un *[[Kotlin]]* bāzētu domēna specifisku valodu (DSL) tradicionālo projekta konfigurācijas XML failu vietā.

Atšķirībā no *[[Apache Maven]]*, kas definē dzīves ciklus, un *[[Apache Ant]]*, kur mērķi tiek izsaukti, balstoties uz secību, ko nosaka atkarības, *Gradle* izmanto orientētu aciklisku grafu, lai noteiktu secību, kādā var izpildīt uzdevumus.

*Gradle* tika izstrādāts ar vairāku projektu būvējumu veidošanai, kas var kļūt ārkārtīgi lieli un atbalsta inkrementālu būvēšanu, nosakot, kuras būvējamā projekta koka daļas var nepārbūvēt.

Sākotnēji izstrādātie spraudņi galvenokārt fokusējās uz *[[Java (programmēšanas valoda)|Java]]*, *[[Groovy (programmēšanas valoda)|Groovy]]* un *[[Scala (programmēšanas valoda)|Scala]]* izstrādi un piegādēm, bet tiek plānots arī citu valodu un projektu darba plūsmu atbalsts.

## ''Java'' projekta piemērs
Tiek apskatīts gadījums, kad tiek izmantota *[[Apache Maven|Maven]]* direktoriju struktūra *Java* kodam un resursiem. Šie direktoriji ir : **src/main/java**, **src/main/resources**, **src/test/java** un **src/test/resources**.

**build.gradle**

```groovy
apply plugin: 'java'
```


**gradle build** izpildīšana dos šādu rezultātu:


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

BUILD SUCCESSFUL
```


*Java* spraudnis emulē daudzus no sagaidītajiem *Maven* dzīves cikliem kā uzdevumus orientētā acikliskā atkarību grafā no katra uzdevuma ievades un izvades datiem. Šajā vienkāršajā piemērā **build** uzdevums ir atkarīgs no **check** un **assemble** uzdevumu izvada. Līdzīgi **check** ir atkarīgs no **test** un **assemble** ir atkarīgs no **jar**.

Projektiem, kuri neseko *Maven* pieņēmumiem, *Gradle* ļauj konfigurēt direktoriju struktūru. Šis piemērs atbalstītu projektu, kas glabā izejas failus **src/java**, nevis **src/main/java**, ko pieņem *Maven*.

**build.gradle**

```groovy
apply plugin: 'java'
sourceSets.main.java.srcDirs = ['src/java']
```


## ''Ant'' migrācijas piemērs
*Gradle* ir labi integrēts ar *[[Apache Ant|Ant]]* un pat uztver *Ant* būvējumu failus kā skriptus, ko var tieši importēt būvēšanas laikā. Šis piemērs demonstrē vienkāršu *Ant* mērķi, kas tiek iekļauts kā *Gradle* uzdevums.

**build.xml**

```xml
<project>
  <target name="ant.target">
    <echo message="Izpilda ant.target!"/>
  </target>
</project>
```


**build.gradle**

```groovy
ant.importBuild 'build.xml'
```


**gradle ant.target** izpildīšana dos:


```text
> gradle ant.target
:ant.target
[ant:echo] Izpilda ant.target!

BUILD SUCCESSFUL
```


## Bibliogrāfija

* 
* 
* 
* 

## Atsauces

## Ārējās saites
* 
** Pārskats
** Gradle Forums
** Lietotāja pamācības
*** Standarta spraudņi, kas nāk līdzi ''Gradle''
*** ''Java'' iesākuma pamācība
*** ''Groovy'' iesākuma pamācība
*** ''Ant'' izmantošanas piemēri
* ''Gradleware'' komerciālam atbalstam
* ''Gradle Summit'' konference 2013. gada 13.-14. jūnijā Santaklarā
* , *Gradle* izveidotājs Hanss Dokters
*  ar *Gradle* dibinātāju Hansu Dokteru un Aleksandaru Gargentu
* ''Gradle'' prezentācija
* Iesācēju pamācība no *Schuchert*
* ''Gradle'' projektu prototipi