JavaRush /Blog Jawa /Random-JV /A introduksi cepet kanggo Gradle
Viacheslav
tingkat

A introduksi cepet kanggo Gradle

Diterbitake ing grup

Pambuka

Topik review iki bakal dadi sistem mbangun otomatis Gradle. Ing basa Inggris, mbangun sistem diarani Build Tools . Pambuka cepet kanggo Gradle - 1Apa iki malah perlu? Mbangun proyek ing Jawa kanthi manual minangka proses sing rada akeh tenaga kerja. Sampeyan kudu kanthi bener nunjukake perpustakaan lan kerangka kerja sing dibutuhake proyek lan gumantung saka proyek kasebut. Ing kene sampeyan bisa maca artikel sing apik babagan Habré: " Nggarap Jawa ing baris perintah ." Cepet utawa mengko sampeyan bakal miwiti nggawe sawetara skrip kanggo ngotomatisasi proses iki. Saiki bayangake manawa kabeh pangembang ing saindenging jagad nindakake iki lan kabeh wong nulis maneh apa sing wis ditulis kanggo proyeke. Banjur muncul sistem perakitan proyek sing ngotomatisasi proses iki. Kajaba iku, ing tangan siji, ngidini sampeyan ngumpulake proyek kanthi cara sing dikarepake, ing sisih liya, menehi alat sing luwih standar. Alternatif kanggo Gradle yaiku sistem mbangun otomatis Maven. Loro sistem perakitan iki, ing tangan siji, beda, nanging ing tangan liyane, padha duwe sawetara podho. Ana materi babagan topik iki ing situs web Gradle: " Migrasi saka Maven menyang Gradle ". Kaya sing kasebut ing tutorial iki, Gradle lan Maven duwe perspektif sing beda babagan carane nggawe proyek. Gradle adhedhasar grafik tugas, sing bisa gumantung ing saben liyane. Tugas nindakake sawetara jinis karya. Maven nggunakake model fase tartamtu, sing ditempelake "gol" tartamtu. Tujuan kasebut yaiku ing ngendi sawetara karya rampung. Nanging, kanthi pendekatan sing beda-beda iki, loro-lorone mbangun sistem ngetutake konvensi sing padha lan manajemen ketergantungan padha. Kanggo miwiti nggunakake Gradle sampeyan kudu ngundhuh. Ing Google utawa Yandex kita ngetik "Gradle Build Tool" lan ing asil pisanan kita ndeleng situs web resmi: https://gradle.org . Ing kaca utama Gradle ana link karo teks "Docs", sing ndadékaké menyang dokumentasi Gradle . Pisanan, kita kudu nginstal (Instal) Gradle, supaya kita kasengsem ing bagean " Nginstal Gradle " saka dokumentasi. Ana akeh cara instalasi, kalebu cara "kuno", i.e. kanthi manual (" Nginstal kanthi manual "). Miturut pandhuane, download file saka jinis " mung binar ", sing bakal duwe jeneng kaya gradle-5.1.1-bin.zip. Sabanjure, unpack arsip lan konfigurasi variabel lingkungan PATH miturut instruksi. Ingkang utama yaiku sawise nglakokake instruksi kasebut, prentah kasebut gradle -vnuduhake versi Gradle sing diinstal. Bisa uga ana masalah nalika nemtokake lokasi, sistem bakal nemokake Gradle ora ing ngendi sampeyan pengin. Mulane, ing Windows sampeyan bisa nindakake (ing *nix ana analog): for %i in (gradle.bat) do @echo. %~$PATH:i Saiki, mbok menawa, kita bisa miwiti kenalan.
Pambuka cepet kanggo Gradle - 2

Miwiti proyek Gradle

Aku pengin langsung nyathet yen Gradle babagan nindakake tugas sing diarani tugas (aku bakal nelpon tugas). Tugas diwenehake dening macem-macem plugin . Aku menehi saran supaya maca liyane babagan plugins ing dokumentasi resmi: " Nggunakake Gradle Plugins ". Ana sakumpulan "Inti Plugins" sing tansah kasedhiya nalika Gradle diinstal. Ana macem-macem kategori plugin iki, nanging kita kasengsem ing kategori " Utilitas ". Set iki kalebu plugin " Mbangun Init Plugin ", sing nyedhiyakake tugas kanggo miwiti proyek Gradle. Kita kasengsem nggawe jinis proyek: " java-application ". Ayo mbukak tugas Gradle: gradle init --type java-application Ayo mangsuli sawetara pitakonan ing dalan, contone, yen kita pengin nggunakake DSL Groovy (basa deskripsi tugas standar kanggo Gradle) lan kerangka testing JUnit (kita bakal ngomong babagan iki ing review liyane). Sawise nggawe kita bakal nampa set file ing ngisor iki:
Pambuka cepet kanggo Gradle - 3
Kaping pisanan, sawise diinisialisasi, kita nampa bungkus khusus sing wis dikonfigurasi kanggo versi Gradle - iki minangka skrip khusus. Aku menehi saran supaya sampeyan maca liyane babagan iki ing dokumentasi resmi - " The Gradle Wrapper ". Kapindho, kita ndeleng Gradle Build Script - file build.gradle. Iki minangka file utama, sing nggambarake perpustakaan lan kerangka kerja sing digunakake proyek kita, plugin sing kudu disambungake menyang proyek kasebut lan nggambarake macem-macem tugas. Aku menehi saran supaya maca liyane babagan file iki ing dokumentasi resmi: " Mbangun Script Basics ".
Pambuka cepet kanggo Gradle - 4

Plugins lan Tugas

Yen saiki ndeleng konten Build Script, kita bakal weruh bagean plugin:
plugins {
    id 'java'
    id 'application'
}
Iki minangka plugin sing padha sing wis diomongake sadurunge. Lan yen ana plugin, banjur ana tugas sing saiki kasedhiya kanggo kita. Kita bisa mbukak perintah tugas gradle lan ndeleng apa sing saiki bisa ditindakake karo proyek kasebut:
Pambuka cepet kanggo Gradle - 5
Contone, kanthi nglakokake, gradle runkita bakal mbukak kelas utama aplikasi java:
Pambuka cepet kanggo Gradle - 6
Kaya sing bisa dideleng, kaya sing ditulis ing ngisor iki, 2 actionable tasks: 1 executed, 1 up-to-date apa tegese? Iki tegese total 2 tugas wis rampung: Kajaba iku, 1 wis rampung, lan siji ora dileksanakake, amarga ... iku up-to-date, yaiku, negara saiki lan ora ana sing ditindakake. Kita bisa nglakokaké apa sing disebut "Dry Run": gradle run -m Ayo nglakokaké printah iki, kita bakal weruh tugas apa sing bakal dileksanakake kanggo nglakokaké tugas run:
Pambuka cepet kanggo Gradle - 7
Kaya sing kita deleng, total 4 tugas wis rampung: sadurunge run dieksekusi, dieksekusi kelas tugas dependensi. Kelas kasebut duwe 2 dependensi lan mula uga dieksekusi compileJava lan processResources. Nalika kita nindakake tugas, kita bisa nindakake nalika ndeleng tingkat tartamtu saka log (tingkat logging nemtokake carane penting pesen kita pengin ndeleng). Contone, kita bisa nindakake gradle run -i. Iki uga bakal nuduhake pesen informasi kaya:
Task :classes UP-TO-DATE
Skipping task ':classes' as it has no actions.
Kanggo informasi luwih lengkap babagan mlebu ing Gradle, aku menehi saran supaya sampeyan ngrujuk menyang dokumentasi resmi: " Gradle Logging ". Kaya sing kita deleng, tugas kelas dilewati amarga UP-TO-DATE , yaiku, negara saiki, ora ana sing kudu ditindakake, mula ora ana tumindak. Iki amarga kanthi standar Gradle duwe " Pemeriksaan sing paling anyar " utawa sing diarani bangunan tambahan. Sampeyan bisa maca liyane babagan mekanisme iki ing dokumentasi Gradle: " Pemeriksaan paling anyar (AKA Incremental Build) ". Nanging mekanisme iki bisa dipateni kanthi nglakokake tugas sing nemtokake gendera --rerun-tasks. Tuladhane, gradle run --rerun-tasks. Banjur kita bakal weruh: 2 tugas sing bisa ditindakake: 2 dieksekusi Kaya sing sampeyan ngerteni, jumlah tugas sing dieksekusi mung njupuk tingkat pertama grafik, yaiku, tugas sing diluncurake dhewe lan tugas sing langsung gumantung, yaiku , kelas. Tugas sing kelas gumantung ora diitung ing kene (sanajan dieksekusi nalika tugas kelas dieksekusi). Sampeyan uga kudu maca babagan tugas:
Pambuka cepet kanggo Gradle - 8

Ketergantungan

Salah sawijining tugas utama sistem mbangun yaiku ngatur dependensi, yaiku perpustakaan / kerangka kerja sing dibutuhake proyek. Sistem mbangun kudu mesthekake yen kasedhiya ing wektu sing tepat lan ngumpulake artefak pungkasan saka aplikasi kita kanthi cara sing bener. Kanthi gawan, sawise gradle init kanggo aplikasi java, kita bakal weruh isi ing ngisor iki ing skrip mbangun:
dependencies {
    implementation 'com.google.guava:guava:26.0-jre'
    testImplementation 'junit:junit:4.12'
}
Ing kene langsung jelas apa sing kita sambungake. Nanging tanpa pangerten, ora jelas apa implementasine lan tesImplementasi? Ing kene kita kudu bali menyang dokumentasi Gradle, amarga dokumentasi Gradle ditulis kanthi apik. Iki diarani " Ngatur Konfigurasi Dependensi ". Kaya sing kasebut ing dokumentasi, saben dependensi diumumake kanthi ruang lingkup tartamtu - wilayah ing ngendi dependensi iki bakal kasedhiya. Ruang lingkup iki ditemtokake dening sawetara konfigurasi, sing saben duwe jeneng unik. Sampeyan uga menarik yen akeh plugin Gradle nambahake konfigurasi sing wis ditemtokake. Kanggo mangerteni apa konfigurasi kita duwe kita bisa mbukak: gradle --console plain dependencies Kanthi cara iki kita bakal weruh dhaptar kabeh konfigurasi kasedhiya lan dependensi. Kita bisa nyaring dhaptar iki supaya kita bisa ndeleng mung konfigurasi sing kasedhiya dhewe: gradle --console plain dependencies | find " - " Kepiye carane ngerti apa sing digunakake? Sampeyan kudu maca sethithik ing kene. Amarga Kita nggunakake plugin "Jawa", mula ayo miwiti dokumentasi lan bagean " Manajemen dependensi ". Ing kene kita ndeleng manawa ana konfigurasi (alias ruang lingkup) sing diarani "kompilasi" lan tegese "ketergantungan sing dibutuhake sajrone kompilasi". Nanging banjur diganti (ing Inggris Superseded) karo implementasine. Sampeyan bisa maca liyane babagan panggantos ing bagean " API lan pamisahan implementasine ". Pranyata ketergantungan iki bakal ana ing "compile classpath". Nanging kadhangkala kita pengin ketergantungan kita kalebu ing artefak pungkasan. Kanggo apa? Contone, kita bakal duwe jar eksekusi, sing kudu ngemot kabeh sing dibutuhake. Apa sing kudu kita lakoni? Kaping pisanan, ora ana dhukungan "metu saka kothak" (yaiku, kanthi standar, tanpa tumindak tambahan). Iki diterangake kanthi kasunyatan manawa saben wong pengin ngumpulake arsip kanthi cara dhewe, lan Gradle nyoba dadi minimalis. Kita uga ora bisa nggunakake arsip jar ing classpath (tanpa manipulasi tambahan ing kode), amarga ora bisa kaya ngono (Waca " Oracle: Nambahake Kelas menyang Classpath File JAR " kanggo rincian liyane). Mulane, cara sing paling apik yaiku kode ing ngisor iki ing skrip mbangun:
jar {
    manifest {
        attributes 'Main-Class': 'jrgradle.App'
    }
    from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
Ing setelan tugas jar kita nemtokake apa sing bakal ditambahake menyang manifest file jar (pirsani " Oracle: Nyetel Titik Entri Aplikasi "). Banjur kita ngomong yen kabeh dependensi sing dibutuhake kanggo kompilasi bakal dilebokake ing jar. Alternatif yaiku nggunakake " Gradle Shadow Plugin ". Koyone rumit, nanging plugin liyane bisa nggawe urip luwih gampang. Contone, nalika nggawe aplikasi web (minangka lawan saka aplikasi java sing mlaku biasa), kita bakal nggunakake plugin khusus - " Gradle War Plugin ", sing nduweni prilaku sing beda lan urip kita bakal luwih gampang ing kana (kabeh dependensi sing dibutuhake bakal dilebokake ing direktori khusus sing kapisah dening plugin kasebut dhewe. Karya kasebut diatur miturut cara aplikasi web kudu disusun. Nanging critane beda banget).
Pambuka cepet kanggo Gradle - 9

Asil

Gradle minangka pilihan sing apik kanggo sistem mbangun proyek. Iki dikonfirmasi kanthi kasunyatan sing digunakake dening pangembang proyek sing kondhang kaya Spring lan Hibernate. Mung perkara sing paling dhasar sing dibahas ing ndhuwur. Ing mburine ana jutaan fitur lan kesempatan sing diduweni pangembang. Gradle uga ndhukung nggawe proyek multi-modul, sing ora kalebu ing review iki, nanging Gradle dhewe duwe tutorial sing apik: " Nggawe Multi-proyek Mbangun ". Muga-muga review iki uga nuduhake manawa dokumentasi Gradle ditulis ing 5+ lan sampeyan bisa kanthi gampang nemokake apa sing sampeyan butuhake yen sampeyan ngerti babagan goleki. Lan iki bakal teka nalika sampeyan ngerti dhasar. Kajaba iku, Gradle duwe tutorial sing apik. Aku pengin ngrampungake dhaptar cilik babagan apa wae sing bisa dideleng nggunakake Gradle:
Pambuka cepet kanggo Gradle - 10
#Viacheslav
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION