Mungkin saya tidak berbakat, dan ketika saya pertama kali bertemu Maven, saya bingung dengan berbagai tutorial yang tidak diketahui. Dalam penggunaan saya nanti, saya menemukan bahwa sebagian besar fungsi Maven tidak sesulit yang saya bayangkan.
Artikel ini untuk pemula Maven, berharap untuk membiarkannya memahami Maven secepat mungkin dan menikmati serangkaian manfaat yang dibawanya.
[Pertanyaan sederhana]
Sebelum memberikan penjelasan, ajukan pertanyaan sederhana.
Jika Anda mengembangkan dua proyek Java di bawah Eclipse, dan memanggilnya A dan B, beberapa fungsi dalam Proyek A bergantung pada kelas -kelas tertentu dalam Proyek B, bagaimana mempertahankan ketergantungan ini?
Saya melakukan ini sebelum menggunakan Maven, dikemas Project B sebagai toples, dan mengimpor file JAR B di bawah Perpustakaan Proyek A.
Ini memiliki kerugian yang jelas:
1. Jika bug di B ditemukan selama proses pengembangan, B harus dikemas ulang dan dikompilasi ulang untuk Proyek A.
2. Saat berkolaborasi dalam pengembangan proyek A, untuk memastikan bahwa ia dapat berjalan secara normal, memilih untuk mengemas B ke A, atau memilih untuk menerbitkan B seperti B dan menginformasikan pengembang cara menggunakannya. Jelas, kedua metode itu tidak terlalu bagus. Yang pertama dapat menyebabkan pemborosan sumber daya (misalnya, pengembang dapat mengembangkan proyek lain yang mengandalkan B, yang telah disimpan secara lokal), sementara yang terakhir akan membawa risiko pada operasi normal proyek (jika pekerjaan diserahkan ke pekerjaan manual, akan ditakdirkan untuk membawa tingkat kegagalan tertentu).
Oleh karena itu, secara manual mengendalikan ketergantungan antara proyek dengan cara ini jelas merupakan pendekatan 'buruk'.
[Pengantar Maven]
Menurut pendapat penulis, fungsi inti Maven adalah untuk menggambarkan ketergantungan antar proyek secara wajar.
Semua proyek Maven berisi file bernama pom.xml, yang merekam <groupId> <RtifactId> sendiri <version> dan bidang lainnya. Bidang -bidang ini diisi saat membuat proyek Maven, dan Maven akan menemukan proyek berdasarkan mereka.
Tag kunci lain dalam POM adalah <dependencies>, yang dapat berisi beberapa tag <dependency>, dan di bawah <dependency> adalah bidang ketergantungan seperti <groupId> <ArTifactId> <version> Diperkenalkan di atas, yang menentukan versi proyek yang unik.
A khas pom.xml [dari proyek luajava]:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.keplerproject</groupId> <artifactId>luajava</artifactId> <version>1.1</version> <packaging>jar</packaging> <name> luajava </name> <rurl> http://maven.apache.org </rurl> <pro properties> <poject.build.sourceencoding> UTF-8 </plugroject.build.sourceencoding> </Properties> <build> <builger> <builgin> <builger> <groupsid. <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 3.8.1 </version> <scope> tes </seupop> </gandendency> </joy Project>
[Perpustakaan Maven]
Mengambil proyek A dan B baru saja sebagai contoh, tulis <ganteng> dalam file POM Proyek A, dan Maven akan menemukan proyek B di ruang kerja dan membuat ketergantungan. Pada saat ini, Project A dapat secara langsung mengakses sumber daya kelas di Proyek B, dan breakpoint yang ditetapkan dalam Proyek B masih akan terkena debugging A.
Selain Asosiasi Ketergantungan Ruang Kerja, Maven juga dapat mengaitkan proyek dalam gambar jarak jauh. Secara default, jika tidak ada catatan proyek yang sesuai di ruang kerja, Maven akan terhubung ke repositori pusat untuk dilihat. Jika ditemukan, itu akan mengunduh proyek ke perpustakaan lokal (perpustakaan lokal di Windows terletak di direktori .m2 dokumen pengguna) dan secara otomatis mengatur asosiasi. Ini adalah fitur yang sangat nyaman. Ketika kami membutuhkan dukungan paket JAR tambahan, kami tidak perlu lagi mengunduh secara manual dan memperkenalkannya. Kita hanya perlu menempelkan bidang ketergantungan yang sesuai dengan proyek ke lokasi POM yang sesuai, dan meninggalkan sisanya ke Maven untuk diselesaikan.
[Contoh]
Jadi, bagaimana kita tahu bidang seperti GroupID dari proyek yang diperlukan?
Secara umum, jika proyek resmi mendukung Maven, umumnya akan ada bidang ketergantungan pada halamannya untuk menyalin, tetapi ada juga situasi di mana Maven didukung tetapi tidak ada bidang dependen yang diberikan. Fitur Maven dari proyek lain dikelola oleh pihak ketiga, dan sulit untuk mendapatkan dukungan untuk Maven dari saluran resmi.
Oleh karena itu, solusi yang lebih disukai untuk quering ketergantungan bidang adalah dengan menggunakan layanan pencarian Maven untuk mencari.
Di sini saya merekomendasikan alamat: mvnrepository.com
Berikut ini adalah contoh menggunakan Eclipse untuk mengaitkan driver MySQLJDBC. Sebelum ini, harap konfirmasi bahwa itu mendukung Maven di Bantuan-> Tentang Lips:
Dalam versi baru Eclipse, Dukungan untuk Maven sudah built-in. Jika versinya lebih tua, Anda dapat menginstal plug-in Maven.
Pertama-tama mari kita buat proyek Maven baru, baru-> Project-> MavenProject-> CreateMeasImpleProject (skiparchetypeselection).
Berikut ini adalah langkah terpenting. Isi bidang ketergantungan seperti GroupID dari proyek ini. Bidang yang diisi di sini akan digunakan ketika proyek lain bergantung padanya. Bagian yang tidak terisi adalah opsional:
Setelah itu, kami mencari "mysql jdbc" di mvnrepository.com
Segera, kami menemukan hasilnya dan mengklik untuk melihat informasi versi terperinci:
Berikut adalah daftar beberapa versi dan penggunaan MySQL JDBC. Di sini kami memilih versi baru kedua 5.1.34:
Salin konten di kotak Maven dan tuliskan ke Pom's <Dependencies>:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <nodelversion> 4.0.0 </podelversion> <groupid> com.test </sroupid> <t Artifactid> Maventest </Artifactid> <version> 0.0.1-Snapshot </Version </Artifactid> <version> 0.0.1-Snapshot </Version </Versi </ArtifactId> <sifactid> <version> 0.0.1-Snapshot </Version </Version </Artifactid> <version> 0.0.1-Snapshot </Version </Version </artifactid> <version> 0.0. <ArTifactId> mysql-connector-java </arttifactid> <version> 5.1.34 </version> </dependency> </dependencies> </joy Project>
Setelah bilah membaca kemajuan selesai, Anda dapat melihat bahwa ada lebih banyak dependensi Maven dalam proyek, dan Anda dapat menemukan paket driver JDBC yang baru saja kami perkenalkan:
[Fitur Lain]
1. Sumber cermin
Jelas bahwa gudang pusat Maven memiliki beban yang relatif besar dan tidak ada di Cina, sehingga kecepatannya sangat lambat dan kadang -kadang ketergantungan tidak dapat ditemukan. Oleh karena itu, terutama dalam acara pengembangan tim skala kecil, membangun server pribadi Maven akan sangat meningkatkan efisiensi. Berikut adalah alat pembangun gambar Maven: Nexus: http://www.sonatype.org/nexus/
Gunakan untuk dengan cepat dan mudah membangun sumber gambar Maven pribadi, dan kemudian konfigurasinya di Maven Settings.xml.
2. Unduh Malas Kode Sumber SRC
Pada beberapa waktu, kita perlu merujuk ke file sumber yang tergantung pada proyek. Pada saat ini, kami dapat mencoba mengklik dua kali file kelas secara langsung. Jika ada file sumber di sumber gambar Maven, itu akan diunduh secara otomatis ke area lokal, dan Eclipse akan secara otomatis memuat dan menampilkan.
3. Kompilasi Konfigurasi Parameter
Penulis menggunakan versi eclipseluna. Versi kompilasi Java default dari Maven adalah 1.5. Kami dapat menentukan versi kompilasi di POM untuk memperbaikinya menjadi 1.7 (lihat tag build di luajavapom); Selain itu, pengaturan ini juga akan dibaca dan dikonfigurasi dengan benar oleh alat otomatisasi seperti integrasi kontinu Jenkins.
Meringkaskan
Di atas adalah tentang pemahaman Maven dengan cepat. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!