1. Apa itu Maven
Maven adalah alat konstruksi proyek yang dikembangkan di Java. Ini dapat mengotomatiskan kompilasi, pengujian, penerbitan, dan dokumen selama proses konstruksi proyek, sangat mengurangi beban penyebaran pemrogram.
2. Instal Maven
Menginstal Maven sangat sederhana. Kunjungi halaman Maven resmi untuk diunduh: http://maven.apache.org/download.cgi
Setelah mengunduh, konfigurasikan variabel lingkungan M2_HOME, dan kemudian jalankan MVN --versi di terminal. Saat Anda melihat prompt output yang benar, Maven diinstal.
3. Konsep Dasar Maven
Gagasan inti Maven adalah POM, yaitu model objek proyek. File POM menjelaskan sumber daya (kode sumber, dependensi, tes, dll.) Yang digunakan oleh proyek Maven dalam bentuk file XML. Gambar berikut menjelaskan struktur file POM dan bagaimana Maven memanggil file POM.
Ketika perintah Maven dieksekusi, file POM akan diteruskan, dan Maven akan dieksekusi pada sumber daya yang dijelaskan dalam POM
File pom:
<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 "> <podelversion> 4.0.0 </podelversion> <!-Dasar-dasar-> <groupid> ... </groupid> <artifactid> ... </artifactid> <version> </Versi </Versi> <TREPRIGING> ... <enttent> ... </tuelt> <DependencyManagement> ... </DependencyManagement> <podules> ... </todules> <properties> ... </properties> <!-Bangun Pengaturan-> <build> ... </build> <laporting> ... </pelaporan> <!-informasi lebih lanjut-> <name> ... </name> </description> </decreand <Inceptionyear> ... </Inceptionyear> <Sisensen> ... </sisencats> <ryromination> ... </Organization> <developers> ... </pengembang> <Contributors> ... </contributors> <!-Pengaturan Lingkungan-> <ssuSagement> ... </issueman manajemen> <cimanagement> ... </cimanagement> <cailingists> <cingansagement> <Cimanagement> <srasyquisites> ... </prasyarat> ... </repositori> <Repositories> ... </repositories> <LuginRepositories> ... </pluginrepositories> <distributionManagement> ... </DistributionManagement> <Profils> ... </Profiles> </Project>
ModelVersion adalah versi model POM, 4.0.0 mendukung Maven2 dan 3
Koordinat maven (koordinat maven)
(1) GroupID: Ini adalah ID unik dari suatu organisasi atau proyek. Dalam kebanyakan kasus, itu akan menggunakan nama root dari paket java proyek sebagai groupid, seperti com.pastqing
(2) Artifactid: Ini adalah nama proyek yang sedang dibangun, misalnya, sistem pembayaran artefactid adalah bayaran web. Artifactid adalah nama subdirektori di bawah direktori Groupid di repositori Maven
(3) Versi: Karena namanya menyiratkan nomor versi penerbitan proyek
Tiga item di atas adalah bagian dari nama hasil build. Setelah proyek dibangun, paket JAR akan dihasilkan. Jalur yang terletak di repositori Maven adalah maven_repo/com/pastqing/web-pay/1.0/web-pay-1.0.jar
4. Proyek Java Hello World Dibangun dengan Maven
Bangun proyek menggunakan arketipe plugin Maven:
Buka direktori kerja di terminal dan jalankan perintah:
MVN Archetype: Hasilkan
, Pertama kali berjalan lebih lambat karena pertama kali Anda perlu mengunduh prototipe proyek terkait dari repositori pusat Maven. Setelah mengunduh, model proyek akan dipilih, dan groupid, artefactid, versi, dll. Akan dimasukkan. Akan ada permintaan yang sukses setelah konstruksi selesai.
Mengemas Proyek: Beralih ke Direktori Root Proyek dan jalankan paket MVN. Setelah paket berhasil, proyek akan menghasilkan folder target dengan file jar dan file kelas yang dihasilkan.
Jalankan file jar:
Java -CP Target/HelloWorld-1.0-snapshot.jar com.pastqing.app
Pada titik ini, proyek Java paling sederhana yang dibangun oleh Maven telah selesai.
5. Proyek Java-Web yang dibangun dengan Maven
Menghasilkan proyek Web pada dasarnya mirip dengan menghasilkan proyek Java, tetapi model yang digunakan berbeda. Saya tidak akan menjelaskannya di sini. Mari kita bicara tentang cara menggunakan plug-in Tomcat atau Jetty untuk menjalankan proyek web. Di sini kami menganggap Tomcat sebagai contoh.
Instalasi plug-in Maven Tomcat: http://tomcat.apache.org/maven-plugin-2.2/
Kami menambahkan informasi plug-in berikut ke file POM di proyek web
<Plugin> <GroupId> org.apache.tomcat.maven </sroupid> <t ArtifactId> tomcat6-maven-plugin </stifactid> <version> 2.2 </version> </plugin/<croupid> org.apache.tomcat.maven </groupin> <croupac7 <version> 2.2 </version> </lugin>
Dengan cara ini, kami mengintegrasikan plug-in Maven dari Tomcat, dan kami hanya perlu satu perintah untuk menggunakan dan memulai layanan. Perintahnya adalah sebagai berikut:
MVN Tomcat: Jalankan
(tomcat6)
mvn tomcat7: run
(tomcat7)
Penyebaran otomatis ke tomcat eksternal menggunakan plugin Tomcat Maven
Penyebaran otomatis di atas akan menggunakan Tomcat yang tertanam di Maven. Selanjutnya, kami memodifikasi file POM untuk memungkinkan proyek digunakan ke tomcat eksternal.
Ubah file Project POM dan tambahkan informasi konfigurasi server
<lugin> <groupid> org.apache.tomcat.maven </proupid> <ArtifactId> tomcat7-maven-plugin </t Artifactid> <version> 2.2 </version> <configuration> <rerl> http: // localhost: 8080/manager/manajer/teks </url> <server> tom/server7 </localhost: 8080/manager/Text </url> <server> tom/server7 </server7 </server7/tom/tom/tom/tom/tom/tom/tom/tomc7/tom/tom/tomcor7 <swasword> admin </swasward> </configuration> </lugin>
Nilai server, nama pengguna, dan kata sandi sesuai satu per satu ke server, nama pengguna, dan kata sandi dalam pengaturan.xml di %maven_home.
Mulai tomcat eksternal dan jalankan perintah mvn tomcat7: redeploy
6. Cara Membangun Proyek Multi-Modul dengan Maven
1. Orangtua Pom
Semua file Maven POM diwarisi dari POM induk. Jika tidak ada POM induk yang ditentukan, file POM diwarisi dari pom root. Hubungan integrasi file POM ditunjukkan pada gambar di bawah ini:
Anda dapat membuat satu file pom secara eksplisit mewarisi file POM lain. Dengan cara ini, pengaturan semua file POM anak dapat dimodifikasi dengan memodifikasi pengaturan file POM orang tua publik. Di sini kami menggunakan tag induk untuk mendefinisikan pom induk. Mari Bangun Proyek Mavne Multi-Modul
2. Bangun Struktur Direktori Proyek
Kami membuat proyek Maven-Web yang disebut EducationCloud. Selanjutnya, kami membuat beberapa folder di direktori proyek untuk membagi modul kami. Mereka adalah pendidikan-orang tua (modul orang tua), pendidikan-inti (bisnis), entitas pendidikan (entitas), pendidikan-web (layanan web)
Divisi direktori dapat dibagi sesuai dengan kebutuhan, divisi saya seperti di atas
3. Ubah file POM
Kami menggunakan tag modul untuk membagi modul. Buka file POM di direktori root dan tambahkan tag MooDle.
<? Xml Version = "1.0" encoding = "UTF-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.EducationCloud</groupId> <artifactId>EducationCloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>Education-parent</module> <module>Education-core</module> <module>Education-entity</module> <module>Education-web</module> </modules> <name>EducationCloud</name></project>
Di sini kita berbicara tentang tag kemasan: yang paling umum adalah mengemasnya sebagai toples, perang. Proyek Maven apa pun perlu menentukan elemen kemasan dalam file POM. Jika elemen tidak dinyatakan, itu dikemas sebagai toples secara default. Jika nilai definisi adalah perang, itu dikemas sebagai paket perang. Jika nilainya POM, tidak ada paket yang dihasilkan (biasanya digunakan dalam modul induk).
Tambahkan tag induk ke setiap modul:
Tag induk digunakan untuk menentukan posisi koordinat pom induk, dan didefinisikan sebagai berikut:
<partent> <groupid> com.EducationCloud </groupid> <ArTifactId> educedcloud-parent </stifactid> <version> 1.0-snapshot </version> <relativePath> </RelativePath> </detent>
Versi Groupid, Aritfactid, adalah elemen yang mewakili informasi lokasi POM induk. RelativePath adalah jalur relatif yang mewakili lokasi POM induk. Standarnya adalah ../pom.xml. Perlu dicatat di sini bahwa versi Groupid, AritfactID, harus sesuai dengan file POM induk.
Gunakan Manajemen Ketergantungan untuk mengelola semua dependensi dalam proyek. Untuk mengelola dependensi secara seragam, kami menggunakan manajemen ketergantungan dalam file POM dari modul proyek induk untuk mendeklarasikan semua dependensi dalam proyek. Dengan cara ini, ketika mengacu pada dependensi di subproyek lain, nomor versi dapat dihilangkan, dan juga mudah dimodifikasi.
Tulis file pom modul proyek induk ** educationcloud-parent, tambahkan sebagai berikut:
Gunakan PluginManagement untuk mengelola plugin Maven di proyek. Untuk mengelola plugin Maven secara seragam dalam proyek, seperti plugin kompilasi Maven, plugin pengemasan, dll. Dan informasi konfigurasinya, tambahkan manajemen plugin ke file POM proyek induk untuk manajemen. Dengan cara ini, plugin yang dirujuk dalam semua submodul akan diproses secara seragam, dan berikut ini ditambahkan:
<pluginManagement> <plugins> <!-- Complile plugin configuration--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-complier-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> <lugin> </lugin> </pluginmanagement>
Di atas kami menambahkan konfigurasi plug-in kompilasi Maven, disusun dengan JDK1.7. Setelah menabung, kita dapat melihat modifikasi yang sesuai dalam POM efektif dari setiap submodule.
Gunakan tag properti untuk mendefinisikan konstanta:
Kami mendefinisikan nomor versi setiap ketergantungan sebagai konstanta yang berbeda, sehingga nyaman untuk modifikasi di masa depan:
<Properties> <jdkversion> 1.7 </jdkversion> <servletVersion> 3.1.0 </servletversion> <mysqlversion> 5.1.34 </sysqlversion> <unitversion> 4.12 </junitversion> <delaSencoding> UTF-8 </defaultencoding> </JunitVersion>
Saat mengutip, cukup gunakan bentuk $ {jdkversion}.
Perhatikan, semua operasi di atas dapat dioperasikan dalam IDE, membuatnya lebih nyaman dan sederhana.