คำอธิบายโครงการ แบบจำลองวัตถุ

สิ่งหนึ่งที่ Maven สร้างมาตรฐานตั้งแต่แรกคือคำอธิบายโครงการ ก่อน Maven แต่ละ IDE จะมีไฟล์โครงการของตัวเอง ซึ่งเก็บข้อมูลเกี่ยวกับโครงการและชุดประกอบ (และมักจะอยู่ในรูปแบบไบนารี)

Maven มาพร้อมกับมาตรฐานแบบเปิดที่ใช้ XML ซึ่งเป็นสากล ซึ่งอธิบายว่าโปรเจ็กต์คืออะไร ควรสร้างอย่างไร และอ้างอิงอะไรบ้างโดยใช้แท็กต่างๆ คำอธิบายโปรเจ กต์มีอยู่ในไฟล์เดียว โดยปกติจะมีชื่อว่าpom.xml

ตัวอย่าง ไฟล์pom.xml :

<?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-instance"
        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>example.com</groupId>
   <artifactId>ตัวอย่าง</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <เวอร์ชัน>2.6</version>
        </ การพึ่งพา >
   </ การพึ่งพา >


</ โครงการ >

ตัวอย่างนี้มีสามสิ่งที่เขียน:

  • ข้อมูลเกี่ยวกับเวอร์ชันของมาตรฐานโปรเจ็กต์ maven จะเป็นสีน้ำเงิน
  • ข้อมูลเกี่ยวกับโครงการเป็นสีแดง
  • ข้อมูลเกี่ยวกับห้องสมุดที่ใช้จะเป็นสีเขียว

มาดูอุปกรณ์ไฟล์ pom กันดีกว่า

โครงสร้างโครงการ Maven

และคำถามก็คือ: คุณให้ความสนใจกับความแปลกประหลาดในตัวอย่างที่แล้วหรือไม่? ไม่มีข้อมูลเกี่ยวกับรหัสโครงการ! ไม่มีคำอธิบายว่าไฟล์ java, ทรัพยากร, ไฟล์คุณสมบัติ, html, บิลด์สคริปต์และอื่น ๆ ที่คล้ายกันถูกเก็บไว้ที่ไหน

และคำตอบนั้นง่าย - Maven ทำให้การออกแบบโครงการเป็นมาตรฐาน มีหลายตัวเลือกสำหรับการจัดระเบียบรหัสภายในโครงการ และโดยทั่วไปคือ:

โครงสร้างนั้นผิดปกติเล็กน้อยหลังจากโครงการ IDEA มาตรฐาน แต่สำหรับสิ่งนั้นมันเป็นสากล 90% ของโครงการที่คุณจะพบในชีวิตของคุณจะมีโครงสร้างโฟลเดอร์นี้

หากคุณสร้างโครงการ Maven (โดยใช้ IDEA หรือใช้คอนโซล) โครงการนั้นจะใช้รูปแบบที่ระบุ มาดูกันว่ามันทำงานอย่างไรที่นี่

คุณเดาได้ว่า โฟลเดอร์srcมีซอร์สโค้ดสำหรับโปรเจ็กต์ มันมีสองโฟลเดอร์ย่อย: mainและtest

โฟลเดอร์/src/main/javaเป็นรูทสำหรับคลาส Java ทั้งหมดในโปรเจ็กต์ หากคุณมีคลาส com.codegym.Cat คลาสนั้นจะอยู่ใน โฟลเดอร์ /src/main/java / com/codegym /Cat.java หากมีทรัพยากรที่เป็น ข้อความหรือไบนารี ควรเก็บไว้ใน โฟลเดอร์ /src/main/resources

โครงสร้างของ โฟลเดอร์ /src/testคล้ายกับโครงสร้างของ โฟลเดอร์ /src/mainแต่มีการทดสอบและทรัพยากร Maven รู้วิธีเรียกใช้การทดสอบที่จำเป็นเมื่อสร้างโครงการ แต่เราจะพูดถึงเรื่องนี้ในการบรรยายแยกต่างหาก

นอกจากนี้ยังมีโฟลเดอร์ /targetในโปรเจ็กต์ซึ่ง Maven จะบันทึกโปรเจ็กต์หลังจากสร้างเสร็จ เนื่องจากโปรเจกต์ขนาดใหญ่มักจะมีสคริปต์บิลด์ที่ไม่สำคัญ จึงไม่มีการจัดเก็บในโฟลเดอร์นี้

วัตถุประสงค์ที่สองของ โฟลเดอร์ /targetคือแคชผลลัพธ์ของบิลด์ระดับกลาง เมื่อสร้างโปรเจกต์ขนาดใหญ่ Maven สามารถสร้างได้เฉพาะส่วนที่เปลี่ยนแปลงเท่านั้น ซึ่งจะทำให้เวลาบิลด์เร็วขึ้นหลายเท่า

เช่นเดียวกับเชอร์รี่บนเค้ก - ที่รูทสุดของโปรเจ็กต์คือไฟล์ pom.xml ประกอบด้วยข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับโครงการซึ่งเราจะกล่าวถึงด้านล่าง

อุปกรณ์ pom.xml

ในการเริ่มต้น ไฟล์ pom คือ xml ดังนั้นจึงมีข้อมูลส่วนหัวและเนมสเปซมาตรฐาน นี่คือทั้งหมดที่เกี่ยวกับมาตรฐาน XML ล้วนๆ ดังนั้นเราจะไม่พูดถึงรายละเอียด หมายความว่า:

<?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-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        …

</ โครงการ>

นอกจากนี้ โดยปกติแล้ว บรรทัดแรกภายในแท็ก <project> จะเป็นคำอธิบายเวอร์ชันมาตรฐานของไฟล์ pom เกือบทุกครั้งจะเป็น 4.0 สิ่งนี้ก็ไม่มีประโยชน์สำหรับเราเช่นกัน

บรรทัดแรกที่เราสนใจมีลักษณะดังนี้:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>แอปใหม่</artifactId>
  <version>1.0-SNAPSHOT</version>

เพื่อไม่ให้เข้าใจสิ่งที่เราอธิบายอีกครั้ง (โปรแกรม โครงการ โมดูล ไลบรารี ฯลฯ) ในมาตรฐาน Maven ทั้งหมดนี้เรียกว่าคำว่าสิ่งประดิษฐ์ สิ่งที่คุณไม่สามารถปฏิเสธผู้สร้าง Maven คือความรักในมาตรฐาน

สามแท็กที่คุณเห็นหมายถึง:

  • groupId - แพ็คเกจที่เป็นของแอปพลิเคชันด้วยการเพิ่มชื่อโดเมน
  • artifactId – คีย์สตริงเฉพาะ (รหัสโครงการ);
  • เวอร์ชัน - เวอร์ชันของโครงการ

พารามิเตอร์ทั้งสามนี้เพียงพอที่จะอธิบายสิ่งประดิษฐ์ใด ๆ อย่างชัดเจน

นอกจากนี้ หลังจากคำอธิบายของโครงการแล้ว มักจะมีรายการสิ่งประดิษฐ์ (ไลบรารี) ที่โครงการใช้ ดูเหมือนว่า:

   <การ

       พึ่งพา> <การพึ่งพา>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>

   </dependencies>

ในตัวอย่างนี้ เราเพิ่มไลบรารี Commons-io จากแพ็คเกจ Commons-io เวอร์ชัน 2.6 ลงในโปรเจ็กต์ของเรา

เมื่อถึงเวลาสร้าง Maven จะพบไลบรารีดังกล่าวในพื้นที่เก็บข้อมูลส่วนกลางและเพิ่มลงในโปรเจ็กต์ของคุณ และอย่างไรก็ตาม ไม่ใช่แค่ Maven เท่านั้นที่ทำได้

IDEA ทำงานร่วมกับ Maven อย่างไร

Intellij IDEA ทำงานได้ดีกับ Maven เธอรู้วิธีเปิดโปรเจ็กต์ดังกล่าว สร้างเอง รันสคริปต์บิลด์ต่างๆ และเข้าใจไลบรารีที่รวมอยู่อย่างสมบูรณ์แบบ

มันยังมี Maven ในตัวของมันเองมาระยะหนึ่งแล้ว แต่คุณยังต้องสามารถติดตั้งและกำหนดค่าด้วยตัวเองได้ ดังนั้นฟีเจอร์นี้ของ IDEA จึงไม่ได้รับการกล่าวถึงก่อนหน้านี้ ตามทฤษฎีแล้ว IDEA สามารถมีความขัดแย้งระหว่าง Maven สองคนได้ ดังนั้นจึงเป็นเรื่องดีสำหรับคุณที่จะรู้ว่ามีสองคน

วิธีสร้างโครงการ Maven ใหม่ใน IDEA:

คลิกเมนู ไฟล์ > โครงการใหม่ เลือกรายการเมนูNew Project ทางด้าน ซ้าย

โครงการ Maven

ขอชี้แจงบางประเด็น:

  1. ชื่อโครงการ ;
  2. โฟลเดอร์สำหรับโครงการ
  3. ภาษาของโครงการคือ Java;
  4. ประเภทโครงการคือ Maven

ในส่วนการตั้งค่าขั้นสูงที่ด้านล่าง IDEA จะแจ้งให้คุณระบุ goupID, artifactID และเวอร์ชันของโครงการใหม่ของเรา ข้อมูลนี้สามารถเปลี่ยนแปลงได้ง่ายในภายหลัง เลือกจากรายการที่แนะนำหรือป้อนของคุณเอง:

โครงการ Maven 2

ถัดไป สร้างโครงการมาตรฐานในตำแหน่งที่ต้องการ เป็นผลให้เราเห็นโครงสร้าง:

โครงการ Maven 3

ต้องสร้างคลาสและแพ็คเกจในโฟลเดอร์ java เราได้พูดคุยเกี่ยวกับเรื่องนี้แล้ว และฉันคิดว่าคุณสามารถจัดการกับมันได้อย่างง่ายดาย ก็พร้อมลุยกันต่อแต่ขอย้อนประเด็นสำคัญเรื่องหนึ่งที่เรา "ข้าม" ไปหน่อย