Jawa

Semut vs Maven vs Gradle

Semut vs Maven vs Gradle

Memilih Alat Binaan yang Betul: Semut vs Maven vs Gradle

Semasa pembangunan perisian, pembangun harus membina semula kod yang sama berulang kali. Mereka sering berusaha menggunakan skrip bash atau bahasa skrip lain untuk mengotomatisasi tugas. Namun, ada alat binaan yang tersedia yang lebih sesuai untuk automasi binaan. Alat binaan utama adalah:

Mari selidik alat untuk mengetahui lebih lanjut.

Semut Apache dengan Ivy

Apache Ant adalah alat baris perintah berasaskan Java yang menggunakan fail XML untuk menentukan skrip binaan. Ini digunakan terutama untuk membangun Java tetapi juga dapat digunakan untuk pengembangan C / C ++. Tugas terbina dalam menyediakan cara untuk menyusun, memasang, menguji dan menjalankan aplikasi perisian. Pengguna juga boleh membuat "antlibs" mereka sendiri untuk meningkatkan fungsi Ant. Apache Ivy adalah alat pengurusan pergantungan yang mudah disatukan dengan Ant untuk menyediakan ekosistem yang lebih mantap. Perkembangan Semut bermula pada tahun 2000.

Kelebihan

Keburukan

Semut dengan Contoh Ivy

Anda boleh memasang Semut terbaru dari sini. Anda harus memuat turun zip, mengembangkan dan meletakkan folder tong sampah di jalan anda. Anda boleh menggunakan perintah berikut untuk melihat apakah Semut dipasang dengan betul:

$ ant-penukaran
Apache Ant (TM) versi 1.10.1 disusun pada 2 Februari 2017

Setelah memasang Ant, anda boleh memuat turun balang Ivy terbaru dan memasukkannya ke dalam folder lib di dalam direktori Ant.

Setelah anda memasang Ant, buat folder helloworld dan helloworld / src. Di dalam folder src, masukkan helloworld.fail java dengan kod:

/ **************************
Mencetak "Hello World!"
*************************** /
kelas awam helloworld
utama kekosongan statik awam (String [] args)
Sistem.keluar.println ("Helo Dunia!");

Sekarang di folder helloworld buat binaan.fail xml dengan kod berikut:
























Dan dalam folder helloworld yang sama, buat ivy.fail xml dengan kod berikut:






Struktur direktori akan kelihatan seperti ini:

Hai dunia
| - membina.xml
| - ivy.xml
'- src
'-- Hai dunia.jawa

Sekarang anda boleh menjalankan build dengan arahan:

balang semut $

Binaan yang berjaya harus memberikan output seperti ini:

balang semut $
Buildfile: / Pengguna / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
menyelesaikan:
[ivy: retrieve] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // semut.apache.org / ivy / ::
[ivy: retrieve] :: memuatkan tetapan :: url = jar: file: / Users / zak / BuildTools / ANT / apache
-semut-1.10.1 / lib / ivy-2.4.0.balang!/ org / apache / ivy / inti / tetapan / ivysettings.xml
[ivy: retrieve] :: menyelesaikan kebergantungan :: org.apache # helloworld; [dilindungi e-mel]
MacBook-Air.tempatan
[ivy: retrieve] confs: [lalai]
[ivy: retrieve] ditemui junit # junit; 4.12 di khalayak ramai
[ivy: retrieve] org terjumpa.hamcrest # hamcrest-core; 1.3 di khalayak ramai
[ivy: retrieve] :: laporan resolusi :: menyelesaikan 397ms :: artifak dl 15ms
---------------------------------------------------------------------
| | modul || artifak |
| conf | nombor | cari | dwnlded | diusir || nombor | dwnlded |
---------------------------------------------------------------------
| lalai | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[ivy: retrieve] :: mengambil :: org.apache # helloworld
[ivy: retrieve] confs: [lalai]
[ivy: ambil] 0 artifak disalin, 4 sudah diambil (0kB / 39ms)
menyusun:
[mkdir] Dibuat dir: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
kelas
[javac] / Pengguna / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: amaran:
'includeantruntime' tidak ditetapkan, lalai untuk membina.sysclasspath = terakhir; ditetapkan kepada palsu
untuk binaan berulang
[javac] Menyusun 1 fail sumber kepada / Pengguna / zak / _work / LearnBuildScripts / LearnANT /
helloworld / build / kelas
balang:
[mkdir] Dibuat dir: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Jar bangunan: / Pengguna / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Hai dunia.balang
MEMBINA KEJAYAAN
Jumlah masa: 6 saat

Anda boleh mencuba fail balang seperti ini:

$ java -cp build / bin / helloworld.balang helloworld
Hai dunia!

Kami telah menentukan fail jar untuk dimasukkan ke dalam folder build / bin. Folder dibuat semasa pembinaan. Perintah jar semut memanggil sasaran balang dalam binaan.xml.

Maven

Maven dikembangkan untuk menyelesaikan masalah yang dihadapi dengan skrip berasaskan Ant. Itu menyimpan fail XML tetapi mengambil pendekatan yang berbeza untuk organisasi. Di Semut, pembangun harus membuat semua tugas. Maven mengurangkan penciptaan tugas dengan menerapkan standard yang lebih kuat untuk mengatur kod. Hasilnya, lebih mudah untuk memulakan projek standard.

Ia juga memperkenalkan muat turun kebergantungan yang menjadikan pembangunan lebih mudah. Sebelum pengenalan Ivy di Ant, pengguna harus menguruskan pergantungan secara tempatan. Maven menggunakan falsafah pengurusan kebergantungan terlebih dahulu.

Namun, standard ketat Mavens menyukarkan penulisan skrip binaan tersuai. Alat ini senang dikendalikan selagi projek itu mengikut piawaian yang ketat.

Kelebihan

Keburukan

Contoh Maven

Anda boleh memuat turun Maven terbaru dari sini. Anda boleh menyemak pemasangan seperti ini:

$ mvn - penukaran
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Rumah Maven: / Pengguna / zak / BuildTools / Maven / apache-maven-3.5.2
Versi Java: 1.8.0_74, vendor: Oracle Corporation
Rumah Java: / Perpustakaan / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Kandungan / Rumah / jre
Lokasi lalai: en_US, pengekodan platform: UTF-8
Nama OS: "mac os x", versi: "10.11.6 ", lengkungan:" x86_64 ", keluarga:" mac "

Buat folder helloworld dan hasilkan projek dengan arahan berikut:

$ mvn archetype: menghasilkan -DgroupId = com.nama syarikat.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

Ia harus membuat struktur folder dan menghasilkan output yang kelihatan seperti ini:

[INFO] Mengimbas projek ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Membangun Projek Maven Stub (Tanpa POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin: 3.0.0: menjana (default-cli)> menghasilkan sumber
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ berdiri sendiri <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin: 3.0.0: menjana (default-cli) @ standalone-pom ---
[INFO] Menghasilkan projek dalam mod Batch
[INFO] ----------------------------------------------------------------------------
[INFO] Menggunakan parameter berikut untuk membuat projek dari Lama (1.x) Jenis Arkib:
maven-archetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Nilai: / Pengguna / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parameter: pakej, Nilai: com.nama syarikat.Hai dunia
[INFO] Parameter: groupId, Nilai: com.nama syarikat.Hai dunia
[INFO] Parameter: artifactId, Nilai: helloworld
[INFO] Parameter: packageName, Nilai: com.nama syarikat.Hai dunia
[INFO] Parameter: versi, Nilai: 1.0-SNAPSHOT
[INFO] projek dibuat dari Lama (1.x) Arkib dalam dir: / Pengguna / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFO] MEMBINA KEJAYAAN
[INFO] ------------------------------------------------------------------------
[INFO] Jumlah masa: 8.602 s
[INFO] Selesai pada: 2018-01-27T00: 05: 37-08: 00
[INFO] Ingatan Akhir: 15M / 152M
[INFO] ------------------------------------------------------------------------

Struktur folder kelihatan seperti ini:

Hai dunia
| - pom.xml
'- src
| - utama
| '- java
| '- com
| '-- nama syarikat
| '-- Hai dunia
| '-- Aplikasi.jawa
'- ujian
'- java
'- com
'-- nama syarikat
'-- Hai dunia
'- Ujian App.jawa

The pom.xml mengandungi konfigurasi build. Di dalam pom.xml kodnya 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 syarikat.Hai dunia
Hai dunia
balang
1.0-SNAPSHOT
Hai dunia
http: // maven.apache.org


junit
junit
3.8.1
ujian


Anda boleh menghasilkan fail jar menggunakan arahan berikut:

pakej $ mvn
[INFO] Mengimbas projek ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Membangun helloworld 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin: 2.6: sumber (lalai-sumber) @ helloworld ---
[AMARAN] Menggunakan pengekodan platform (sebenarnya UTF-8) untuk menyalin sumber yang disaring, i.e.
membina bergantung pada platform!
[INFO] langkau sumber yang tidak adaDirektori / Pengguna / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / sumber
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: kompilasi (default-compile) @ helloworld ---
[INFO] Perubahan dikesan - menyusun semula modul!
[PERINGATAN] Pengekodan fail belum ditetapkan, menggunakan pengekodan platform UTF-8, i.e. membina adalah
bergantung kepada platform!
[INFO] Menyusun 1 fail sumber kepada / Pengguna / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / target / kelas
[INFO]
[INFO] --- maven-resources-plugin: 2.6: testResources (lalai-testResources) @
Hai dunia ---
[AMARAN] Menggunakan pengekodan platform (sebenarnya UTF-8) untuk menyalin sumber yang disaring, i.e.
membina bergantung pada platform!
[INFO] langkau sumber yang tidak adaDirektori / Pengguna / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / ujian / sumber
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: testCompile (default-testCompile) @ helloworld ---
[INFO] Perubahan dikesan - menyusun semula modul!
[PERINGATAN] Pengekodan fail belum ditetapkan, menggunakan pengekodan platform UTF-8, i.e. membina adalah
bergantung kepada platform!
[INFO] Menyusun 1 fail sumber kepada / Pengguna / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / kelas ujian
[INFO]
[INFO] --- maven-surefire-plugin: 2.12.4: ujian (ujian lalai) @ helloworld ---
[INFO] Direktori laporan Surefire: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / sasaran /
laporan pasti
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Menjalankan com.nama syarikat.Hai dunia.Ujian Aplikasi
Ujian dijalankan: 1, Kegagalan: 0, Kesalahan: 0, Langkau: 0, Masa berlalu: 0.014 saat
Keputusan:
Ujian dijalankan: 1, Kegagalan: 0, Kesalahan: 0, Langkau: 0
[INFO]
[INFO] --- maven-jar-plugin: 2.4: balang (default-jar) @ helloworld ---
[INFO] Jar bangunan: / Pengguna / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
helloworld-1.0-SNAPSHOT.balang
[INFO] ------------------------------------------------------------------------
[INFO] MEMBINA KEJAYAAN
[INFO] ------------------------------------------------------------------------
[INFO] Jumlah masa: 5.624 s
[INFO] Selesai pada: 2018-01-27T00: 11: 10-08: 00
[INFO] Ingatan Akhir: 16M / 114M
[INFO] ------------------------------------------------------------------------

Anda boleh menjalankan fail balang seperti ini:

$ java -cp target / helloworld-1.0-SNAPSHOT.balang com.nama syarikat.Hai dunia.Aplikasi
Hai dunia!

Fail balang dimasukkan ke dalam folder sasaran.

Gradle

Gradle menggabungkan kekuatan Ant dan Maven. Versi pertama Gradle dikeluarkan pada tahun 2012. Ia menyaksikan penggunaan yang pantas. Google kini menggunakannya untuk OS Android.

Daripada XML, Gradle menggunakan bahasa Groovy. Hasilnya, skrip binaan di Gradle lebih mudah ditulis dan dibaca. Pada mulanya ia menggunakan Ivy untuk pengurusan ketergantungan, tetapi kini menggunakan mesin pergantungannya sendiri.

Kelebihan

Keburukan

Contoh Gradle

Anda boleh memasang Gradle dari sini. Sebaik sahaja anda menyiapkan Gradle di jalan anda, anda boleh memeriksanya dengan:

$ gradle --versi
------------------------------------------------------------
Gradle 4.5
------------------------------------------------------------
Masa binaan: 2018-01-24 17:04:52 UTC
Semakan: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 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.6 x86_64

Seterusnya, buat struktur direktori berikut:

Hai dunia
| - membina.leret
'- src
| - utama
'- java
'-- Hai dunia
'-- Hai dunia.jawa

Untuk dunia helloworld.java meletakkan kod dari contoh Semut. Dan untuk membina.gradle masukkan kod berikut:

gunakan pemalam: 'java'
versi = '1.0 '
repositori
mavenCentral ()

kebergantungan
testCompile group: 'junit', nama: 'junit', versi: '4.12 '

Anda boleh menggunakan perintah "gradle task -all" untuk melihat semua perintah yang ada. Gradle secara automatik mengambil plugin yang anda nyatakan dalam build.gradle file dan menunjukkan tugas tambahan yang ada kerana plugin.

Anda boleh mendapatkan binaan dengan menjalankan:

balang $ gradle
MEMBINA KEJAYAAN dalam 1s
2 tugas yang boleh dilaksanakan: 2 dilaksanakan

Anda boleh menjalankan balang anda seperti ini:

$ java -cp build / libs / helloworld-1.0.balang helloworld
Hai dunia!

Fail jar dimasukkan ke dalam folder build / libs.

Kesimpulannya

Di antara alat binaan, Semut dapat berguna untuk projek yang lebih kecil sementara Maven lebih baik untuk memastikan semua pembangun mengikuti peraturan yang sama. Gradle adalah alat terbaru yang memberikan kelonggaran yang paling.

Rujukan:

Enjin Permainan Sumber Percuma dan Terbuka untuk Membangunkan Permainan Linux
Artikel ini akan merangkumi senarai enjin permainan sumber percuma dan terbuka yang dapat digunakan untuk mengembangkan permainan 2D dan 3D di Linux. ...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...