1. Maven คืออะไร
Maven เป็นเครื่องมือก่อสร้างโครงการที่พัฒนาขึ้นใน Java สามารถทำการรวบรวมการทดสอบการเผยแพร่และเอกสารในระหว่างกระบวนการก่อสร้างโครงการโดยอัตโนมัติลดภาระการปรับใช้ของโปรแกรมเมอร์
2. ติดตั้ง maven
การติดตั้ง Maven นั้นง่ายมาก เยี่ยมชมหน้า Maven อย่างเป็นทางการเพื่อดาวน์โหลด: http://maven.apache.org/download.cgi
หลังจากดาวน์โหลดกำหนดค่าตัวแปรสภาพแวดล้อม M2_Home จากนั้นเรียกใช้ MVN -Version ในเทอร์มินัล เมื่อคุณเห็นพรอมต์เอาต์พุตที่ถูกต้อง Maven จะถูกติดตั้ง
3. แนวคิดพื้นฐานของ Maven
แนวคิดหลักของ Maven คือ POM นั่นคือโมเดลวัตถุโครงการ ไฟล์ POM อธิบายทรัพยากร (ซอร์สโค้ดการพึ่งพาการทดสอบ ฯลฯ ) ที่ใช้โดยโครงการ Maven ในรูปแบบของไฟล์ XML รูปต่อไปนี้อธิบายโครงสร้างของไฟล์ POM และวิธีที่ Maven เรียกไฟล์ POM
เมื่อมีการดำเนินการคำสั่ง maven ไฟล์ POM จะถูกส่งผ่านและ Maven จะถูกดำเนินการในทรัพยากรที่อธิบายไว้ใน POM
ไฟล์ POM:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <moderVersion> 4.0.0 </modelversion> <!-พื้นฐาน-> <GroupId> ... <carent> ... </parent> <ส่วนต่อพึ่งพาการจัดการ> ... </การพึ่งพาการจัดการ> <modules> ... </modules> <properties> ... </properties> <!-สร้างการตั้งค่า-> <uffect> ... </build> <incepteyear> ... </inceptyear> <licenses> ... </ใบอนุญาต> <ganicals> ... </solvoys> <velomenters> ... </นักพัฒนา> <ผู้สนับสนุน> ... </ผู้ให้ข้อมูล> <! <.quustites> ... </squiredaceites> ... </depositories> <ที่เก็บ> ... </decories> <PlugInRepositories> ... </pluginRepositories> <SutributionManagement> ...
ModelVersion เป็นรุ่น POM รุ่น 4.0.0 รองรับ Maven2 และ 3
Maven Coordinates (Maven Coordinates)
(1) GroupID: เป็นรหัสที่ไม่ซ้ำกันขององค์กรหรือโครงการ ในกรณีส่วนใหญ่จะใช้ชื่อรูทของแพ็คเกจ Java ของโครงการเป็น GroupID เช่น com.pastqing
(2) ARTIFACTID: มันเป็นชื่อของโครงการที่ถูกสร้างขึ้นตัวอย่างเช่นระบบการชำระเงิน ARTIFACTID เป็นค่าใช้จ่ายเว็บ ARTIFACTID เป็นชื่อไดเรกทอรีย่อยภายใต้ไดเรกทอรี GroupID ในที่เก็บ Maven
(3) เวอร์ชัน: ตามชื่อหมายถึงหมายเลขเวอร์ชันของการออกโครงการ
สามรายการข้างต้นเป็นส่วนหนึ่งของชื่อของผลการสร้าง หลังจากสร้างโครงการแล้วจะมีการสร้างแพ็คเกจ JAR เส้นทางที่อยู่ในที่เก็บ maven คือ maven_repo/com/pastqing/web-pay/1.0/web-pay-1.0.jar
4. โครงการ Hello World Java ที่สร้างขึ้นด้วย Maven
สร้างโครงการโดยใช้ maven plugin charin:
เปิดไดเรกทอรีการทำงานในเทอร์มินัลและเรียกใช้คำสั่ง:
MVN Archetype: สร้าง
ครั้งแรกที่มันทำงานช้าลงเนื่องจากครั้งแรกที่คุณต้องดาวน์โหลดต้นแบบโครงการที่เกี่ยวข้องจากที่เก็บ Maven Central หลังจากดาวน์โหลดแล้วโมเดลโครงการจะถูกเลือกและจะป้อนกลุ่ม artifactid, ฯลฯ ฯลฯ จะมีความสำเร็จหลังจากการก่อสร้างเสร็จสิ้น
บรรจุภัณฑ์โครงการ: เปลี่ยนไปใช้ไดเรกทอรีรูทโครงการและเรียกใช้แพ็คเกจ MVN หลังจากแพ็คเกจสำเร็จแล้วโครงการจะสร้างโฟลเดอร์เป้าหมายด้วยไฟล์ JAR ที่สร้างขึ้นและไฟล์คลาส
เรียกใช้ไฟล์ jar:
Java -CP Target/HelloWorld-1.0-snapshot.jar com.pastqing.app
ณ จุดนี้โครงการ Java ที่ง่ายที่สุดที่สร้างโดย Maven ได้เสร็จสิ้นแล้ว
5. โครงการ Java-Web ที่สร้างขึ้นด้วย Maven
การสร้างโครงการเว็บนั้นคล้ายคลึงกับการสร้างโครงการ Java แต่โมเดลที่ใช้นั้นแตกต่างกัน ฉันจะไม่อธิบายที่นี่ มาพูดคุยเกี่ยวกับวิธีการใช้ Tomcat หรือ Jetty Plug-in เพื่อเรียกใช้โครงการเว็บ ที่นี่เราใช้ Tomcat เป็นตัวอย่าง
การติดตั้งปลั๊กอิน Maven Tomcat: http://tomcat.apache.org/maven-plugin-2.2/
เราเพิ่มข้อมูลปลั๊กอินต่อไปนี้ลงในไฟล์ POM ในโครงการเว็บ
<plugin> <roupid> org.apache.tomcat.maven </groupid> <ratifactid> tomcat6-maven-plugin </artifactid> <sersion> 2.2 </version> </plugin> <plugin> <cersion> 2.2 </version> </plugin>
ด้วยวิธีนี้เรารวมปลั๊กอิน Maven ของ Tomcat และเราต้องการเพียงคำสั่งเดียวในการปรับใช้และเริ่มบริการ คำสั่งมีดังนี้:
MVN Tomcat: Run
(Tomcat6)
MVN Tomcat7: Run
(Tomcat7)
การปรับใช้อัตโนมัติไปยัง Tomcat ภายนอกโดยใช้ปลั๊กอิน Tomcat Maven
การปรับใช้อัตโนมัติข้างต้นจะใช้ Tomcat ที่ฝังอยู่ใน Maven ต่อไปเราแก้ไขไฟล์ POM เพื่อให้โครงการถูกปรับใช้กับ Tomcat ภายนอก
แก้ไขไฟล์ Project POM และเพิ่มข้อมูลการกำหนดค่าเซิร์ฟเวอร์
<plugin> <sloupid> org.apache.tomcat.maven </groupid> <ratifactid> tomcat7-maven-plugin </artifactid> <sersion> 2.2 </version> <การกำหนดค่า> <url> http: // localhost: 8080/manager/manager <password> ผู้ดูแลระบบ </password> </การกำหนดค่า> </plugin>
ค่าของเซิร์ฟเวอร์ชื่อผู้ใช้และรหัสผ่านจะสอดคล้องกันทีละหนึ่งไปยังเซิร์ฟเวอร์ชื่อผู้ใช้และรหัสผ่านในการตั้งค่า xml ใน %maven_home
เริ่ม Tomcat ภายนอกและเรียกใช้คำสั่ง MVN Tomcat7: redeploy
6. วิธีการสร้างโครงการหลายโมดูลด้วย maven
1. ผู้ปกครองปอม
ไฟล์ Maven POM ทั้งหมดได้รับการสืบทอดมาจาก PARY POM หากไม่ได้ระบุ PAM PARTER POM ไฟล์ POM จะถูกสืบทอดมาจากรูท POM ความสัมพันธ์ในการรวมของไฟล์ POM แสดงในรูปด้านล่าง:
คุณสามารถสร้างไฟล์ POM หนึ่งไฟล์สืบทอดไฟล์ POM อื่นได้อย่างชัดเจน ด้วยวิธีนี้การตั้งค่าไฟล์ POM เด็กทั้งหมดสามารถแก้ไขได้โดยการปรับเปลี่ยนการตั้งค่าของไฟล์ POM พาเรนต์สาธารณะ ที่นี่เราใช้แท็กหลักเพื่อกำหนด PAME POM มาสร้างโครงการ mavne หลายโมดูลกันเถอะ
2. สร้างโครงสร้างไดเรกทอรีโครงการ
เราสร้างโครงการ Maven-Web ที่เรียกว่า EducationCloud ต่อไปเราจะสร้างโฟลเดอร์หลายแห่งในไดเรกทอรีโครงการเพื่อแบ่งโมดูลของเรา พวกเขาคือผู้ปกครองการศึกษา (โมดูลผู้ปกครอง), การศึกษา-คอร์ (ธุรกิจ), การศึกษา-เอนทิตี (เอนทิตี), การศึกษา-เว็บ (บริการเว็บ)
แผนกไดเรกทอรีสามารถแบ่งได้ตามความต้องการแผนกของฉันอยู่ข้างต้น
3. แก้ไขไฟล์ POM
เราใช้แท็กโมดูลเพื่อแบ่งโมดูล เปิดไฟล์ POM ในไดเรกทอรีรูทและเพิ่มแท็ก moudle
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" <Sersion> 1.0-SNAPSHOT </เวอร์ชัน> <packaging> POM </packaging> <modules> <module> การศึกษา-ผู้ปกครอง </domule> <module> Education-core </doals> <module> Education-entity </module> <domule>
ที่นี่เราพูดถึงแท็กบรรจุภัณฑ์: สิ่งที่พบบ่อยที่สุดคือการบรรจุมันเป็นขวด, สงคราม โครงการ Maven ใด ๆ จำเป็นต้องกำหนดองค์ประกอบที่บรรจุในไฟล์ POM หากองค์ประกอบไม่ได้ประกาศจะถูกบรรจุเป็นขวดโดยค่าเริ่มต้น หากค่านิยามคือสงครามมันจะถูกบรรจุเป็นแพ็คเกจสงคราม หากค่าเป็น POM จะไม่มีการสร้างแพ็คเกจ (โดยปกติจะใช้ในโมดูลพาเรนต์)
เพิ่มแท็กหลักในแต่ละโมดูล:
แท็กหลักใช้เพื่อกำหนดตำแหน่งพิกัดของ PARTE POM และกำหนดไว้ดังนี้:
<carent> <roupId> com.educationCloud </groupId> <ratifactId> EducationCloud-Parent </artifactId> <Sersion> 1.0-SNAPSHOT </เวอร์ชัน> <ineliTyPath>
GroupID, aritFactId, เวอร์ชันเป็นองค์ประกอบที่แสดงถึงข้อมูลตำแหน่งของ PAM POM สัมพัทธ์ path เป็นเส้นทางสัมพัทธ์ที่แสดงถึงที่ตั้งของ PARTE POM ค่าเริ่มต้นคือ ../pom.xml ควรสังเกตที่นี่ว่า GroupID, aritFactId, เวอร์ชันต้องสอดคล้องกับไฟล์ PAM POM
ใช้การจัดการพึ่งพาเพื่อจัดการการพึ่งพาทั้งหมดในโครงการ เพื่อจัดการการพึ่งพาอย่างสม่ำเสมอเราใช้การจัดการพึ่งพาในไฟล์ POM ของโมดูลโครงการหลักเพื่อประกาศการพึ่งพาทั้งหมดในโครงการ ด้วยวิธีนี้เมื่ออ้างถึงการพึ่งพาในโครงการย่อยอื่น ๆ หมายเลขเวอร์ชันสามารถละเว้นได้และมันก็ง่ายต่อการแก้ไข
เขียนไฟล์ POM ของโมดูลโครงการหลัก ** EducationCloud-Parent เพิ่มดังนี้:
ใช้การจัดการปลั๊กอินเพื่อจัดการปลั๊กอิน Maven ในโครงการเพื่อจัดการปลั๊กอิน Maven อย่างสม่ำเสมอในโครงการเช่นปลั๊กอินการรวบรวม Maven ปลั๊กอินบรรจุภัณฑ์ ฯลฯ และข้อมูลการกำหนดค่าเพิ่มปลั๊กอินการจัดการกับไฟล์ POM POMEN POM สำหรับการจัดการ ด้วยวิธีนี้ปลั๊กอินที่อ้างอิงใน submodules ทั้งหมดจะถูกประมวลผลอย่างสม่ำเสมอและเพิ่มต่อไปนี้:
<pluginmanagement> <plugins> <!-การกำหนดค่าปลั๊กอินที่น่าพอใจ-> <plugin> <molin> <loupid> org.apache.maven.plugins </groupId> <ArtIfactId> maven-complier-plugin </artifactid> <cersion> 3.3 </เวอร์ชัน> <การกำหนดค่า> </การกำหนดค่า> <ปลั๊กอิน> </plugins> </pluginmanagement>
ด้านบนเราเพิ่มการกำหนดค่าของปลั๊กอินรวบรวม Maven รวบรวมด้วย JDK1.7 หลังจากบันทึกเราสามารถเห็นการปรับเปลี่ยนที่สอดคล้องกันใน POM ที่มีประสิทธิภาพของแต่ละ submodule
ใช้แท็กคุณสมบัติเพื่อกำหนดค่าคงที่:
เรากำหนดจำนวนเวอร์ชันของการพึ่งพาแต่ละค่าเป็นค่าคงที่ที่แตกต่างกันเพื่อให้สะดวกสำหรับการปรับเปลี่ยนในอนาคต:
<properties> <jdkversion> 1.7 </jdkversion> <servletversion> 3.1.0 </servletversion> <mysqlversion> 5.1.34 </mysqlversion> <junitversion> 4.12 </junitversion>
เมื่ออ้างถึงเพียงใช้รูปแบบของ $ {Jdkversion}
หมายเหตุการดำเนินการทั้งหมดข้างต้นสามารถดำเนินการใน IDE ทำให้สะดวกและเรียบง่ายมากขึ้น