Jawa

Semut vs Maven vs Gradle

Semut vs Maven vs Gradle

Memilih Alat Bangun yang Tepat: Semut vs Maven vs Gradle

Selama pengembangan perangkat lunak, pengembang harus membangun kembali kode yang sama berulang kali. Mereka sering mencoba menggunakan skrip bash atau bahasa skrip lainnya untuk mengotomatiskan tugas. Namun, ada alat build yang tersedia yang lebih sesuai untuk otomatisasi build. Alat pembuatan yang dominan adalah:

Mari selidiki alat untuk mengetahui lebih lanjut.

Apache Ant dengan Ivy

Apache Ant adalah alat baris perintah berbasis Java yang menggunakan file XML untuk mendefinisikan skrip pembangunan. Ini sebagian besar digunakan untuk pembuatan Java tetapi juga dapat digunakan untuk pengembangan C/C++. Tugas bawaan menyediakan cara untuk mengkompilasi, merakit, menguji, dan menjalankan aplikasi perangkat lunak. Pengguna juga dapat membuat "antlibs" mereka sendiri untuk meningkatkan fungsionalitas Ant. Apache Ivy adalah alat manajemen ketergantungan yang terintegrasi dengan mudah dengan Ant untuk menyediakan ekosistem yang lebih kuat. Perkembangan Semut dimulai pada tahun 2000.

kelebihan

Kontra

Contoh Semut dengan Ivy

Anda dapat menginstal Ant terbaru dari sini. Anda harus mengunduh zip, memperluas dan meletakkan folder bin di jalur Anda. Anda dapat menggunakan perintah berikut untuk melihat apakah Ant diinstal dengan benar:

$ semut -versi
Apache Ant(TM) versi 1.10.1 dikompilasi pada 2 Februari 2017

Setelah Ant terinstal, Anda dapat mengunduh toples Ivy terbaru dan meletakkannya di folder lib di dalam direktori Ant.

Setelah Ant terinstal, buat folder helloworld dan helloworld/src. Di dalam folder src, masukkan helloworld.file java dengan kode:

/***************************
Mencetak "Halo Dunia!"
***************************/
kelas publik helloworld
public static void main(String[] args)
Sistem.di luar.println("Halo Dunia!");

Sekarang di folder helloworld buat build.xml file dengan kode berikut:
























Dan di folder helloworld yang sama, buat ivy.xml file dengan kode berikut:






Struktur direktori akan terlihat seperti ini:

Halo Dunia
|-- membangun.xml
|-- ivy.xml
'-- src
'-- Halo Dunia.Jawa

Sekarang Anda dapat menjalankan build dengan perintah:

$ jar semut

Build yang berhasil harus memberikan output seperti ini:

$ jar semut
Buildfile: /Users/zak/_work/LearnBuildScripts/LearnANT/helloworld/build.xml
menyelesaikan:
[ivy:ambil] :: Apache Ivy 2.4.0 - 20141213170938 :: http://ant.apache.org/ivy/ ::
[ivy:retrieve] :: pengaturan pemuatan :: url = jar:file:/Users/zak/BuildTools/ANT/Apache
-semut-1.10.1/lib/ivy-2.4.0.botol!/org/Apache/ivy/core/settings/ivysettings.xml
[ivy:retrieve] :: menyelesaikan dependensi :: org.apache#helloworld;[email dilindungi]
Macbook Air.lokal
[ivy:retrieve]     conf: [default]
[ivy:retrieve]     ditemukan junit#junit;4.12 di depan umum
[ivy:retrieve]     menemukan org.hamcrest#hamcrest-core;1.3 di depan umum
[ivy:retrieve] :: laporan resolusi :: menyelesaikan 397ms :: artifak dl 15ms
---------------------------------------------------------------------
| | modul            || artefak   |
| conf       | nomor| cari|dwnlded|digusur|| nomor|menurun|
---------------------------------------------------------------------
| bawaan     | 2   | 0   | 0   | 0   || 4   | 0   |
---------------------------------------------------------------------
[ivy:mengambil] :: mengambil :: org.apache#helloworld
[ivy:retrieve]     conf: [default]
[ivy:retrieve]     0 artefak disalin, 4 sudah diambil (0kB/39 md)
menyusun:
[mkdir] Dir yang dibuat: /Users/zak/_work/LearnBuildScripts/LearnANT/helloworld/build/
kelas
[javac] /Users/zak/_work/LearnBuildScripts/LearnANT/helloworld/build.xml:22: peringatan:
'includeantruntime' tidak disetel, default untuk membangun.sysclasspath=terakhir; disetel ke salah
untuk bangunan yang dapat diulang
[javac] Mengkompilasi 1 file sumber ke /Users/zak/_work/LearnBuildScripts/LearnANT/
helloworld/build/kelas
botol:
[mkdir] Dir yang dibuat: /Users/zak/_work/LearnBuildScripts/LearnANT/helloworld/build/bin
[jar] Jar bangunan: /Users/zak/_work/LearnBuildScripts/LearnANT/helloworld/build/bin/
Halo Dunia.botol
SUKSES MEMBANGUN
Total waktu: 6 detik

Anda dapat mencoba file jar seperti ini:

$ java -cp build/bin/helloworld.toples helloworld
Halo Dunia!

Kami telah mendefinisikan file jar untuk dimasukkan ke dalam folder build/bin. Folder dibuat selama build. Perintah ant jar memanggil target jar di build.xml.

Maven

Maven dikembangkan untuk menyelesaikan masalah yang dihadapi dengan skrip berbasis Ant. Itu menyimpan file XML tetapi mengambil pendekatan yang berbeda untuk organisasi. Di Ant, pengembang harus membuat semua tugas. Maven mengurangi pembuatan tugas dengan menerapkan standar yang lebih kuat untuk mengatur kode. Akibatnya, lebih mudah untuk memulai proyek standar.

Itu juga memperkenalkan unduhan ketergantungan yang membuat pengembangan lebih mudah. Sebelum pengenalan Ivy di Ant, pengguna harus mengelola dependensi secara lokal. Maven mengadopsi filosofi manajemen ketergantungan terlebih dahulu.

Namun, standar ketat Maven mempersulit penulisan skrip pembuatan khusus. Alat ini mudah digunakan selama proyek mengikuti standar yang ketat.

kelebihan

Kontra

Contoh Maven

Anda dapat mengunduh Maven terbaru dari sini. Anda dapat memeriksa instalasi seperti ini:

$mvn --versi
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00:58:13-07:00)
Beranda pakar: /Users/zak/BuildTools/Maven/Apache-maven-3.5.2
Versi Java: 1.8.0_74, vendor: Oracle Corporation
Beranda Java: /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Isi/Beranda/jre
Lokal default: en_US, penyandian platform: UTF-8
Nama OS: "mac os x", versi: "10.11.6", lengkungan: "x86_64", keluarga: "mac"

Buat folder helloworld dan buat proyek dengan perintah berikut:

$ mvn pola dasar: hasilkan -DgroupId=com.Nama Perusahaan.helloworld -DartifactId=helloworld
-DarchetypeArtifactId=maven-arketipe-quickstart -DinteractiveMode=false

Itu harus membuat struktur folder dan menghasilkan output yang terlihat seperti ini:

[INFO] Memindai proyek…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Proyek Rintisan Bangunan Maven (Tanpa POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-arketipe-plugin:3.0.0:generate (default-cli) > generate-sources
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-arketipe-plugin:3.0.0:hasilkan (default-cli) @ standalone-pom ---
[INFO] Membuat proyek dalam mode Batch
[INFO] ----------------------------------------------------------------------------
[INFO] Menggunakan parameter berikut untuk membuat proyek dari Lama (1.x) Pola dasar:
maven-arketipe-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Nilai: /Users/zak/_work/LearnBuildScripts/LearnMaven
[INFO] Parameter: paket, Nilai: com.Nama Perusahaan.Halo Dunia
[INFO] Parameter: groupId, Nilai: com.Nama Perusahaan.Halo Dunia
[INFO] Parameter: artifactId, Nilai: helloworld
[INFO] Parameter: packageName, Value: com.Nama Perusahaan.Halo Dunia
[INFO] Parameter: versi, Nilai: 1.0-SNAPSHOT
[INFO] proyek dibuat dari Lama (1.x) Pola dasar di dir: /Users/zak/_work/
LearnBuildScripts/LearnMaven/helloworld
[INFO] ------------------------------------------------------------------------
[INFO] BANGUN SUKSES
[INFO] ------------------------------------------------------------------------
[INFO] Total waktu: 8.602 detik
[INFO] Selesai pada: 27-01-2018T00:05:37-08:00
[INFO] Memori Akhir: 15M/152M
[INFO] ------------------------------------------------------------------------

Struktur folder akan terlihat seperti ini:

Halo Dunia
|-- pom.xml
'-- src
|-- utama
| '-- jawa
| '-- com
| '-- Nama Perusahaan
| '-- Halo Dunia
| '-- Aplikasi.Jawa
'-- uji
'-- jawa
'-- com
'-- Nama Perusahaan
'-- Halo Dunia
'-- AppTest.Jawa

pom.xml berisi konfigurasi build. Di dalam pom.xml kodenya terlihat seperti ini:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0
_0.xsd">
4.0.0
com.Nama Perusahaan.Halo Dunia
Halo Dunia
botol
1.0-SNAPSHOT
Halo Dunia
http://maven.apache.organisasi


junit
junit
3.8.1
uji


Anda dapat membuat file jar menggunakan perintah berikut:

paket $mvn
[INFO] Memindai proyek…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Membangun helloworld 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6: sumber daya (sumber daya default) @ helloworld ---
[PERINGATAN] Menggunakan pengkodean platform (UTF-8 sebenarnya) untuk menyalin sumber daya yang difilter, i.e.
build bergantung pada platform!
[INFO] lewati resourceDirectory yang tidak ada /Users/zak/_work/LearnBuildScripts/LearnMaven/
helloworld/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1: kompilasi (kompilasi default) @ helloworld ---
[INFO] Perubahan terdeteksi - kompilasi ulang modul!
[PERINGATAN] Encoding file belum disetel, menggunakan platform encoding UTF-8, i,.e. membangun adalah
tergantung platform!
[INFO] Mengkompilasi 1 file sumber ke /Users/zak/_work/LearnBuildScripts/LearnMaven/
helloworld/target/kelas
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @
Halo Dunia ---
[PERINGATAN] Menggunakan penyandian platform (sebenarnya UTF-8) untuk menyalin sumber daya yang difilter, i.e.
build bergantung pada platform!
[INFO] lewati resourceDirectory yang tidak ada /Users/zak/_work/LearnBuildScripts/LearnMaven/
helloworld/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ helloworld ---
[INFO] Perubahan terdeteksi - kompilasi ulang modul!
[PERINGATAN] Encoding file belum disetel, menggunakan platform encoding UTF-8, i,.e. membangun adalah
tergantung platform!
[INFO] Mengkompilasi 1 file sumber ke /Users/zak/_work/LearnBuildScripts/LearnMaven
/helloworld/target/kelas-tes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ helloworld ---
[INFO] Direktori laporan yang pasti: /Users/zak/_work/LearnBuildScripts/LearnMaven
/halo dunia/target/
laporan pasti
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Menjalankan com.Nama Perusahaan.Halo Dunia.Tes Aplikasi
Tes dijalankan: 1, Kegagalan: 0, Kesalahan: 0, Dilewati: 0, Waktu berlalu: 0.014 detik
Hasil :
Pengujian dijalankan: 1, Kegagalan: 0, Kesalahan: 0, Dilewati: 0
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld ---
[INFO] Membuat toples: /Users/zak/_work/LearnBuildScripts/LearnMaven/helloworld/target/
halo dunia-1.0-SNAPSHOT.botol
[INFO] ------------------------------------------------------------------------
[INFO] BANGUN SUKSES
[INFO] ------------------------------------------------------------------------
[INFO] Total waktu: 5.624 detik
[INFO] Selesai pada: 27-01-2018T00:11:10-08:00
[INFO] Memori Akhir: 16M/114M
[INFO] ------------------------------------------------------------------------

Anda dapat menjalankan file jar seperti ini:

$java -cp target/helloworld-1.0-SNAPSHOT.jar com.Nama Perusahaan.Halo Dunia.Aplikasi
Halo Dunia!

File jar diletakkan di folder target.

Gradle

Gradle menggabungkan kekuatan Semut dan Maven. Versi pertama Gradle dirilis pada 2012. Itu telah melihat adopsi yang cepat. Google saat ini menggunakannya untuk OS Android.

Alih-alih XML, Gradle menggunakan bahasa Groovy. Hasilnya, skrip build di Gradle lebih mudah untuk ditulis dan dibaca. Awalnya menggunakan Ivy untuk manajemen ketergantungan, tetapi sekarang menggunakan mesin ketergantungannya sendiri.

kelebihan

Kontra

Contoh Gradle

Anda dapat menginstal Gradle dari sini. Setelah menyiapkan Gradle di jalur Anda, Anda dapat memeriksanya dengan:

$ gradle --versi
------------------------------------------------------------
Tingkat 4.5
------------------------------------------------------------
Waktu pembuatan:   24-01-2018 17:04:52 UTC
Revisi:     77d0ec90636f43669dc794ca17ef80dd65457bec
Keren:       2.4.12
Semut:          Apache Ant(TM) versi 1.9.9 disusun pada 2 Februari 2017
JVM:          1.8.0_74 (Oracle Corporation 25.74-b02)
OS:           Mac OS X 10.11.6x86_64

Selanjutnya, buat struktur direktori berikut:

Halo Dunia
|-- membangun.bertahap
'-- src
|-- utama
'-- jawa
'-- Halo Dunia
'-- Halo Dunia.Jawa

Untuk helloworld.java masukkan kode dari contoh Semut. Dan untuk membangun.gradle masukkan kode berikut:

terapkan plugin: 'java'
versi = '1.0'
repositori
mavenCentral()

dependensi
grup testCompile: 'junit', nama: 'junit', versi: '4.12'

Anda dapat menggunakan perintah "gradle task -all" untuk melihat semua perintah yang tersedia. Gradle secara otomatis mengambil plugin yang Anda tentukan di build.gradle dan menunjukkan kepada Anda tugas tambahan yang tersedia karena plugin.

Anda bisa mendapatkan build dengan menjalankan:

$ toples gradle
MEMBANGUN SUKSES dalam 1 detik
2 tugas yang dapat ditindaklanjuti: 2 dieksekusi

Anda dapat menjalankan toples Anda seperti ini:

$ java -cp build/libs/helloworld-1.0.toples helloworld
Halo Dunia!

File jar diletakkan di folder build/libs.

Kesimpulan

Di antara alat build, Ant dapat berguna untuk proyek yang lebih kecil sementara Maven lebih baik untuk memastikan semua pengembang mengikuti aturan yang sama. Gradle adalah alat terbaru yang memberikan fleksibilitas tertinggi.

Referensi:

Cara membalikkan arah gulir Mouse dan Touchpads di Windows 10
Mouse dan Panel sentuhs tidak hanya membuat komputasi menjadi mudah tetapi juga lebih efisien dan tidak memakan banyak waktu. Kami tidak dapat membaya...
Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...
Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...