JavaRush /Java Blog /Random-TK /Gradle bilen çalt tanyşlyk
Viacheslav
Dereje

Gradle bilen çalt tanyşlyk

Toparda çap edildi

Giriş

Bu synyň mowzugy “Gradle” awtomatiki gurluş ulgamy bolar. Iňlis dilinde gurmak ulgamlary “Build Tools” diýilýär . Gradle bilen çalt tanyşlyk - 1Näme üçin bu zerur? Java-da taslamalary el bilen gurmak gaty köp iş talap edýär. Taslamanyň zerur we taslama bagly bolan kitaphanalary we çarçuwalary dogry görkezmeli. Bu ýerde Habré hakda: " Buýruk setirinde Java bilen işlemek " atly ajaýyp makalany okap bilersiňiz . Iru-giç bu prosesi awtomatlaşdyrmak üçin käbir skriptleri döredip başlarsyňyz. Indi dünýädäki ähli işläp düzüjileriň muny edýändigini göz öňüne getiriň we her kim öz taslamasy üçin eýýäm ýazan zatlaryny ýene ýazýar. Soň bolsa bu prosesi awtomatlaşdyrýan taslama gurnama ulgamlary peýda boldy. Mundan başga-da, bir tarapdan, taslamany isleýşiňiz ýaly ýygnamaga mümkinçilik berýär, beýleki tarapdan, size has az standartlaşdyrylan gurallar berýär. “Gradle” -iň alternatiwasy “Maven” awtomatlaşdyrylan gurluşyk ulgamydyr. Bu iki gurnama ulgamy, bir tarapdan tapawutly, beýleki tarapdan, olaryň birnäçe meňzeşligi bar. Gradle web sahypasynda bu mowzukda bir material bar: " Mawenden Gradle göçmek ". Bu gollanmada aýdylyşy ýaly, Gradle we Maven taslamany nädip gurmalydygyna başgaça garaýarlar. Gradle, biri-birine bagly bolup biljek meseleleriň grafigine esaslanýar. Wezipeler haýsydyr bir iş edýär. Maven belli bir “maksatlar” birikdirilen belli tapgyrlaryň modelini ulanýar. Bu maksatlar käbir işleriň ýerine ýetirilýän ýeridir. Şeýle-de bolsa, bu dürli çemeleşmeler bilen, gurluşyk ulgamlarynyň ikisi-de bir konwensiýa eýerýär we garaşlylygy dolandyrmak meňzeýär. Gradle ulanyp başlamak üçin ony göçürip almaly. Google ýa-da Yandex-de “Gradle Build Tool” -a girýäris we ilkinji netijelerde resmi web sahypasyny görýäris: https://gradle.org . Gradle esasy sahypasynda Gradle resminamalaryna alyp barýan "Resminamalar" teksti bilen baglanyşyk bar . Ilki bilen Gradle gurmaly (gurmaly), şonuň üçin resminamalaryň " Gradle gurmak " bölümi bilen gyzyklanýarys. “Köne moda” usuly ýaly köp sanly gurnama usuly bar. el bilen (“ El bilen gurmak ”). Görkezmelere görä, gradle-5.1.1-bin.zip ýaly ady boljak “ diňe ikilik ” görnüşindäki faýly göçürip alyň. Ondan soň, arhiwi açyň we görkezmelere laýyklykda PATH gurşaw üýtgeýjisini düzüň. Esasy zat, görkezmeleri ýerine ýetirensoň, buýruk gradle -vgurlan Gradle wersiýasyny görkezýär. Locationer kesgitläniňizde ulgam islän ýeriňizi däl-de Gradle tapar ýaly bir mesele bolup biler. Şonuň üçin Windows-da edip bilersiňiz (* nix-de analoglar bar): for %i in (gradle.bat) do @echo. %~$PATH:i Indi, belki, tanşyp bileris.
Gradle bilen çalt tanyşlyk - 2

Gradle taslamasyna başlamak

Gradleň meseleler diýilýän işleri ýerine ýetirmekdigini derrew belläsim gelýär (olara ýumuş diýerin). Wezipeler dürli pluginler bilen üpjün edilýär . Resmi resminamalardaky pluginler barada has giňişleýin okamagyňyzy maslahat berýärin: " Gradle pluginlerini ulanmak ". Gradle gurlanda elmydama elýeterli "Esasy pluginler" toplumy bar. Bu pluginleriň dürli kategoriýalary bar, ýöne " Utility " kategoriýasy bilen gyzyklanýarys . Bu toplumda “Gradle” taslamasyna başlamak üçin meseleler berýän “ Init Plugin Build ” plugin bar. Taslamanyň görnüşini döretmek isleýäris: " java-application ". Gradle meselesini ýerine ýetireliň: gradle init --type java-application Geliň, käbir soraglara jogap bereliň, mysal üçin, Groovy DSL (Gradle üçin standart meseleleriň düşündiriş dili) we JUnit synag çarçuwasyny ulanmak isleýäris (bu barada başga bir synda gürleşeris). Döredilenden soň aşakdaky faýllar toplumyny alarys:
Gradle bilen çalt tanyşlyk - 3
Ilki bilen, başlangyçdan soň Gradle wersiýamyz üçin öňünden düzülen ýörite örtük alýarys - bu ýörite skript. Bu barada has giňişleýin resminamalarda - " Gradle Wrapper " -de okamagyňyzy maslahat berýärin. Ikinjiden, Gradle Build Script - build.gradle faýlyny görýäris. Taslamamyzyň haýsy kitaphanalary we çarçuwalary ulanýandygyny, haýsy pluginleriň taslama birikdirilmelidigini we dürli meseleleri beýan edýän esasy faýl. Bu faýl hakda resmi resminamalarda has giňişleýin okamagyňyzy maslahat berýärin: " Script Basics ".
Gradle - 4

Pluginler we meseleler

Indi Gurluş skriptiniň mazmunyna seretsek, pluginler bölümini göreris:
plugins {
    id 'java'
    id 'application'
}
Bular öňem gürleşen şol bir pluginlerimiz. Plaginler bar bolsa, indi bize elýeterli meseleler bar. Gradle meseleler buýrugyny işledip bileris we indi taslama bilen näme edip biljekdigimizi görüp bileris:
Gradle bilen çalt tanyşlyk - 5
Mysal üçin, ýerine ýetirmek bilen gradle runjava programmamyzyň esasy synpyny başlarys:
Gradle bilen çalt tanyşlyk - 6
Görşümiz ýaly, aşakda hem edil şonuň ýaly ýazylýar. 2 actionable tasks: 1 executed, 1 up-to-date Bu nämäni aňladýar? Bu jemi 2 meseläniň ýerine ýetirilendigini aňladýar: Mundan başga-da, 1 hakykatdanam tamamlandy, biri ýerine ýetirilmedi, sebäbi ... häzirki zaman, ýagny döwlet häzirki we hiç zat edilmedi. "Gury ylga" diýilýän zady ýerine ýetirip bileris: gradle run -m Geliň, bu buýrugy ýerine ýetireliň, işlemek meselesini ýerine ýetirmek üçin haýsy meseleleriň ýerine ýetiriljekdigini göreris:
Gradle bilen çalt tanyşlyk - 7
Görşümiz ýaly, jemi 4 mesele ýerine ýetirildi: işlemezden ozal garaşlylyk meselelerini ýerine ýetirýärdi. Sapaklaryň özünde 2 baglylyk bar we şonuň üçin compileJava we processResources-i ýerine ýetirdi. Bir meseläni ýerine ýetirenimizde, belli bir derejeli surnallary görenimizde ýerine ýetirip bileris (hasaba alyş derejesi biziň görmek isleýän möhüm habarlarymyzy kesgitleýär). Mysal üçin, edip bileris gradle run -i. Bu, şeýle hem bize maglumat habarlaryny görkezer:
Task :classes UP-TO-DATE
Skipping task ':classes' as it has no actions.
Gradle girmek barada has giňişleýin maglumat üçin resmi resminamalara ýüz tutmagyňyzy maslahat berýärin: " Gradle Logging ". Görşümiz ýaly, sapaklaryň meselesi UP-TO-SAN , ýagny döwlet häzirki, hiç zat edilmeli däl, şonuň üçin çäre görülmedi. Sebäbi adaty tertipde Gradle " Döwrebap barlaglar " ýa-da artdyryş gurluşy diýilýär. Bu mehanizm barada Gradle resminamalarynda has giňişleýin okap bilersiňiz: " Döwrebap barlaglar (AKA Incremental Build) ". Thisöne bu mehanizm --rerun-meseleler baýdagyny görkezýän bir işi ýerine ýetirmek arkaly ýapylyp bilner. Mysal üçin , gradle run --rerun-tasks. Soňra göreris: 2 hereketli wezipe: 2 ýerine ýetirilişi Görşüňiz ýaly, ýerine ýetirilen meseleleriň sany diňe grafigiň birinji derejesini, ýagny işiň özi we gönüden-göni bagly bolan meseleleri göz öňünde tutýar. , synplar. Haýsy synplara bagly meseleler bu ýerde sanalmaýar (synplar ýerine ýetirilende ýerine ýetirilýär). Wezipeler barada hem okamaly:
Gradle bilen çalt tanyşlyk - 8

Baglylyklar

Islendik gurluşyk ulgamynyň esasy meselelerinden biri garaşlylygy dolandyrmak, ýagny taslama zerur bolan kitaphanalar / çarçuwalar. Gurluşyk ulgamy, öz wagtynda elýeterliligini üpjün etmeli we amalymyzyň soňky artefaktyny dogry ýygnamaly. Düzgüne görä, java-programma üçin gradle initden soň, gurluşyk skriptinde aşakdaky mazmuny göreris:
dependencies {
    implementation 'com.google.guava:guava:26.0-jre'
    testImplementation 'junit:junit:4.12'
}
Bu ýerde nämäni birleşdirýändigimiz derrew düşnüklidir. Someöne käbir düşünişmezden, durmuşa geçirmegiň we testImplementation-yň nämedigi belli däl? Gradle resminamalary gowy ýazylanlygy sebäpli, bu ýerde ýene Gradle resminamalaryna ýüzlenmeli. Oňa " baglylyk konfigurasiýalaryny dolandyrmak " diýilýär . Resminamalarda aýdylyşy ýaly, her bir garaşlylyk belli bir çäk bilen - bu garaşlylygyň elýeterli boljak meýdany bilen yglan edilýär. Bu çäk, hersiniň özboluşly ady bolan käbir konfigurasiýa bilen kesgitlenýär. Şeýle hem, “Gradle” pluginleriniň köpüsiniň öňünden kesgitlenen konfigurasiýalary goşmagy gyzykly. Haýsy konfigurasiýalarymyzy işledip biljekdigimizi bilmek üçin: gradle --console plain dependencies Şeýlelik bilen, bar bolan konfigurasiýalaryň sanawyny we olara baglylyklary göreris. Bu sanawy diňe bar bolan konfigurasiýalary görmek üçin süzüp bileris: gradle --console plain dependencies | find " - " Näme ulanmalydygyny nädip bilýäris? Bu ýerde azajyk okamaly bolarsyňyz. Sebäbi "Java" pluginini ulanýarys, geliň resminamalary we " baglylyk dolandyryşy " bölüminden başlalyň. Bu ýerde ozal “düzmek” diýilýän konfigurasiýanyň (aka çäk) bardygyny we “düzmek wagtynda zerur garaşlylygy” aňladýandygyny görýäris. Thenöne soňra ýerine ýetirildi (Iňlis dilinde Superseded). Çalyşmak barada " API we ýerine ýetiriş bölünişi " bölüminde has köp okap bilersiňiz . Görnüşi ýaly, bu baglylyk “jemleýji synp ýoluna” bagly bolar. Sometimesöne käwagt garaşlylygymyzyň soňky artefaktda goşulmagyny isleýäris. Näme üçin? Mysal üçin, zerur zatlaryň hemmesini öz içine alýan ýerine ýetirip boljak banka bolar. Onda näme etmeli? Birinjiden, “gutudan daşarda” beýle goldaw ýok (ýagny, goşmaça çäre görmezden). Bu, her kimiň arhiwi özbaşdak ýygnamak isleýändigi we Gradle minimalistik bolmaga synanyşýandygy bilen düşündirilýär. Şeýle hem, synp ýolundaky banka arhiwlerini ulanyp bilmeris (kodda goşmaça manipulýasiýa bolmazdan), sebäbi beýle işlemeýär ( Has giňişleýin maglumat üçin " Oracle: JAR Faýlyň synp ýoluna synp goşmak "). Şonuň üçin iň owadan usul, gurluşyk skriptindäki aşakdaky kod:
jar {
    manifest {
        attributes 'Main-Class': 'jrgradle.App'
    }
    from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
Küýzäniň mesele sazlamalarynda banka faýly manifestine näme goşuljakdygyny kesgitleýäris (" Oracle: Programmanyň giriş nokadyny düzmek "). Soň bolsa, düzmek üçin zerur bolan ähli garaşlylygyň bankanyň içine goşuljakdygyny aýdýarys. Başga bir alternatiwa, " Gradle Shadow Plugin " -i ulanmak . Çylşyrymly ýaly bolup görünmegi mümkin, ýöne beýleki pluginler durmuşy aňsatlaşdyryp biler. Mysal üçin, web programmasy döredilende (yzygiderli işleýän java programmasyndan tapawutlylykda), başga bir gylyk-häsiýetli we durmuşymyz has aňsat boljak ýörite bir plugin - “ Gradle War Plugin ” ulanarys (ähli zerur baglylyklar bolar plaginiň özi tarapyndan aýratyn ýörite kataloga salyň. Şeýle iş web programmalarynyň gurluşy bilen düzgünleşdirilýär. That'söne bu düýbünden başga bir waka).
Gradle - 9

Netijeler

Gradle, taslama gurmak ulgamlary üçin ajaýyp saýlawdyr. Muny Bahar we Gibernate ýaly meşhur taslamalary döredijiler tarapyndan ulanýandygy tassyklaýar. Diňe iň esasy zatlar ýokarda ara alnyp maslahatlaşyldy. Olaryň aňyrsynda döredijileriň bar bolan million aýratynlygy we mümkinçilikleri gizlenendir. Gradle, şeýle hem bu synda öz içine almaýan köp modully taslamalaryň döredilmegini goldaýar, ýöne Gradleň özi üçin “ Köp taslamaly binalary döretmek ” atly ajaýyp sapak bar. Bu syn, Gradleň resminamalarynyň 5+ ýazylandygyny görkezdi we nirä seretmelidigiňize düşünseňiz zerur zatlary aňsatlyk bilen tapyp bilersiňiz. Esasy zatlara düşüneniňizde geler. Mundan başga-da, Gradle-da ajaýyp sapaklar bar. Gradle ulanyp görüp boljak başga zatlaryň kiçijik sanawy bilen tamamlamak isleýärin:
Gradle bilen çalt tanyşlyk - 10
# Wiaçeslaw
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION