Panduan ini memandu Anda dalam menggunakan Maven untuk membangun proyek Java sederhana.
Anda akan membuat aplikasi yang menyediakan waktu dan kemudian membangunnya dengan Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Pertama, Anda harus menyiapkan proyek Java untuk dibangun oleh Maven. Untuk tetap fokus pada Maven, buatlah proyek sesederhana mungkin untuk saat ini. Buat struktur ini di folder proyek pilihan Anda.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
Di dalam direktori src/main/java/hello
, Anda dapat membuat kelas Java apa pun yang Anda inginkan. Untuk menjaga konsistensi dengan panduan ini, buatlah dua kelas berikut: HelloWorld.java
dan Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Sekarang Anda memiliki proyek yang siap dibangun dengan Maven, langkah selanjutnya adalah menginstal Maven.
Maven dapat diunduh sebagai file zip di https://maven.apache.org/download.cgi. Hanya biner yang diperlukan, jadi cari tautan ke Apache-maven- {version} -bin.zip atau Apache-maven- {version} -bin.tar.gz.
Setelah Anda mengunduh file zip, unzip ke komputer Anda. Kemudian tambahkan folder bin ke jalur Anda.
Untuk menguji instalasi Maven, jalankan mvn
dari baris perintah:
mvn -v
Jika semuanya berjalan dengan baik, Anda akan diberikan beberapa informasi tentang instalasi Maven. Ini akan terlihat mirip (walaupun mungkin sedikit berbeda dari) berikut ini:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 10-11-2015T16:41:47+00:00) Beranda Maven: /home/dsyer/Programs/Apache-maven Versi Java: 1.8.0_152, vendor: Azul Systems, Inc. Beranda Java: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Lokal default: en_GB, pengkodean platform: UTF-8 Nama OS: "linux", versi: "4.15.0-36-generic", arch: "amd64", keluarga: "unix"
Selamat! Anda sekarang telah menginstal Maven.
INFO: Anda mungkin ingin mempertimbangkan untuk menggunakan pembungkus Maven untuk melindungi pengembang Anda agar tidak memiliki versi Maven yang benar, atau harus menginstalnya sama sekali. Proyek yang diunduh dari Spring Initializr sudah menyertakan pembungkusnya. Itu muncul sebagai skrip mvnw
di tingkat atas proyek Anda yang Anda jalankan sebagai ganti mvn
.
Sekarang setelah Maven terinstal, Anda perlu membuat definisi proyek Maven. Proyek Maven didefinisikan dengan file XML bernama pom.xml . Antara lain, file ini memberikan nama proyek, versi, dan ketergantungannya pada perpustakaan eksternal.
Buat file bernama pom.xml di root proyek (yaitu letakkan di sebelah folder src
) dan berikan konten berikut:
pom.xml
link:initial/pom.xml[role=include]
Dengan pengecualian elemen opsional
, ini adalah file pom.xml paling sederhana yang diperlukan untuk membangun proyek Java. Ini mencakup rincian konfigurasi proyek berikut:
. Versi model POM (selalu 4.0.0).
. Grup atau organisasi tempat proyek tersebut berada. Sering dinyatakan sebagai nama domain terbalik.
. Nama yang akan diberikan pada artefak perpustakaan proyek (misalnya, nama file JAR atau WAR-nya).
. Versi proyek yang sedang dibangun.
- Bagaimana proyek harus dikemas. Defaultnya adalah "jar" untuk pengemasan file JAR. Gunakan "perang" untuk pengemasan file WAR.
Catatan | Saat memilih skema pembuatan versi, Spring merekomendasikan pendekatan pembuatan versi semantik. |
Pada titik ini Anda telah menentukan proyek Maven yang minimal namun mampu.
Maven sekarang siap untuk membangun proyek tersebut. Anda dapat menjalankan beberapa sasaran siklus hidup pembangunan dengan Maven sekarang, termasuk sasaran untuk mengompilasi kode proyek, membuat paket pustaka (seperti file JAR), dan memasang pustaka di repositori ketergantungan Maven lokal.
Untuk mencoba build, jalankan perintah berikut pada baris perintah:
kompilasi mvn
Ini akan menjalankan Maven, memerintahkannya untuk melaksanakan tujuan kompilasi . Setelah selesai, Anda akan menemukan file .class yang telah dikompilasi di direktori target/classes .
Karena kecil kemungkinan Anda ingin mendistribusikan atau bekerja dengan file .class secara langsung, Anda mungkin ingin menjalankan tujuan paket :
paket mvn
Sasaran paket akan mengkompilasi kode Java Anda, menjalankan pengujian apa pun, dan menyelesaikannya dengan mengemas kode tersebut dalam file JAR di dalam direktori target . Nama file JAR akan didasarkan pada
dan
proyek. Misalnya, dengan file pom.xml minimal dari sebelumnya, file JAR akan diberi nama gs-maven-0.1.0.jar .
Untuk menjalankan file JAR, jalankan:
java -jar target/gs-maven-0.1.0.jar
Catatan | Jika Anda mengubah nilai dari "jar" menjadi "war", hasilnya adalah file WAR dalam direktori target , bukan file JAR. |
Maven juga mengelola repositori dependensi pada mesin lokal Anda (biasanya dalam direktori .m2/repository di direktori home Anda) untuk akses cepat ke dependensi proyek. Jika Anda ingin menginstal file JAR proyek Anda ke repositori lokal tersebut, maka Anda harus menjalankan tujuan install
:
instal mvn
Tujuan instalasi akan mengkompilasi, menguji, dan mengemas kode proyek Anda dan kemudian menyalinnya ke repositori ketergantungan lokal, siap untuk proyek lain untuk mereferensikannya sebagai ketergantungan.
Berbicara tentang dependensi, sekarang saatnya mendeklarasikan dependensi di build Maven.
Contoh sederhana Hello World sepenuhnya mandiri dan tidak bergantung pada perpustakaan tambahan apa pun. Namun sebagian besar aplikasi bergantung pada perpustakaan eksternal untuk menangani fungsionalitas umum dan kompleks.
Misalnya, selain mengucapkan "Halo Dunia!", Anda ingin aplikasi mencetak tanggal dan waktu saat ini. Meskipun Anda dapat menggunakan fasilitas tanggal dan waktu di perpustakaan asli Java, Anda dapat membuat segalanya lebih menarik dengan menggunakan perpustakaan Joda Time.
Pertama, ubah HelloWorld.java menjadi seperti ini:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Di sini HelloWorld
menggunakan kelas LocalTime
Joda Time untuk mendapatkan dan mencetak waktu saat ini.
Jika Anda menjalankan mvn compile
untuk membangun proyek sekarang, pembangunan akan gagal karena Anda belum mendeklarasikan Joda Time sebagai ketergantungan kompilasi dalam pembangunan. Anda dapat memperbaikinya dengan menambahkan baris berikut ke pom.xml (dalam elemen
):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Blok XML ini mendeklarasikan daftar dependensi untuk proyek tersebut. Secara khusus, ini mendeklarasikan ketergantungan tunggal untuk perpustakaan Joda Time. Dalam elemen
, koordinat ketergantungan ditentukan oleh tiga sub-elemen:
- Grup atau organisasi yang memiliki ketergantungan.
- Pustaka yang diperlukan.
- Versi spesifik perpustakaan yang diperlukan.
Secara default, semua dependensi dicakup sebagai dependensi compile
. Artinya, mereka harus tersedia pada waktu kompilasi (dan jika Anda sedang membuat file WAR, termasuk di folder /WEB-INF/libs WAR). Selain itu, Anda dapat menentukan elemen
untuk menentukan salah satu cakupan berikut:
provided
- Dependensi yang diperlukan untuk mengkompilasi kode proyek, tetapi akan disediakan saat runtime oleh container yang menjalankan kode tersebut (misalnya, Java Servlet API).
test
- Dependensi yang digunakan untuk mengkompilasi dan menjalankan pengujian, namun tidak diperlukan untuk membuat atau menjalankan kode runtime proyek.
Sekarang jika Anda menjalankan mvn compile
atau mvn package
, Maven harus menyelesaikan ketergantungan Joda Time dari repositori Maven Central dan pembangunan akan berhasil.
Pertama tambahkan JUnit sebagai ketergantungan pada pom.xml Anda, dalam lingkup pengujian:
link:complete/pom.xml[role=include]
Kemudian buat test case seperti ini:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven menggunakan plugin yang disebut "pasti" untuk menjalankan pengujian unit. Konfigurasi default plugin ini mengkompilasi dan menjalankan semua kelas di src/test/java
dengan nama yang cocok *Test
. Anda dapat menjalankan tes pada baris perintah seperti ini
tes mvn
atau cukup gunakan langkah mvn install
seperti yang telah kami tunjukkan di atas (ada definisi siklus hidup di mana "test" disertakan sebagai tahapan dalam "install").
Berikut file pom.xml
yang sudah selesai:
pom.xml
link:complete/pom.xml[role=include]
Catatan | File pom.xml yang telah selesai menggunakan Plugin Maven Shade untuk kemudahan membuat file JAR dapat dieksekusi. Fokus panduan ini adalah memulai dengan Maven, bukan menggunakan plugin khusus ini. |
Selamat! Anda telah membuat definisi proyek Maven yang sederhana namun efektif untuk membangun proyek Java.
Panduan berikut mungkin juga berguna:
Membangun Proyek Java dengan Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc