Eclipse มีแนวคิดในการสร้างแบบเพิ่มหน่วยสิ่งนี้มีประโยชน์อย่างไม่น่าเชื่อเนื่องจากช่วยประหยัดเวลาได้มาก
สิ่งนี้มีประโยชน์อย่างไร
สมมติว่าคุณเพิ่งเปลี่ยนไฟล์. java ไฟล์เดียว ตัวสร้างส่วนเพิ่มจะสามารถคอมไพล์โค้ดได้โดยไม่ต้องคอมไพล์ใหม่ทุกอย่าง (ซึ่งจะใช้เวลามากขึ้น)
ตอนนี้ปัญหาของ Maven Plugins คืออะไร
ปลั๊กอิน maven ส่วนใหญ่ไม่ได้ออกแบบมาสำหรับการสร้างที่เพิ่มขึ้นและด้วยเหตุนี้จึงสร้างปัญหาให้กับ m2e m2e ไม่ทราบว่าเป้าหมายของปลั๊กอินเป็นสิ่งที่สำคัญหรือไม่เกี่ยวข้อง หากเพียงแค่เรียกใช้ทุกปลั๊กอินเมื่อไฟล์เดียวมีการเปลี่ยนแปลงจะต้องใช้เวลามาก
นี่คือเหตุผลว่าทำไม m2e จึงต้องอาศัยข้อมูลเมตาดาต้าเพื่อหาวิธีจัดการกับการดำเนินการ m2e มีตัวเลือกต่าง ๆ เพื่อให้ข้อมูลเมตาดาต้านี้และลำดับความต้องการมีดังนี้ (สูงสุดไปต่ำสุด)
- pom.xml ของโครงการ
- parent, grand-parent และอื่น ๆ ในไฟล์ pom.xml
- ค่ากำหนดพื้นที่ทำงาน [m2e 1.2+]
- ติดตั้งส่วนขยาย m2e
- [m2e 1.1+] ข้อมูลเมตาการแมปวงจรการใช้งานที่จัดทำโดยปลั๊กอิน maven
- ข้อมูลเมตาการแมปวงจรอายุเริ่มต้นที่มาพร้อมกับ m2e
1,2 หมายถึงการระบุส่วน pluginManagement ในแท็กของไฟล์ pom ของคุณหรือในส่วนของผู้ปกครอง M2E อ่านคอนฟิกูเรชันนี้เพื่อกำหนดคอนฟิกโปรเจ็กต์ข้อมูลโค้ดด้านล่างจะแนะนำให้ m2e ละเว้นjslint
และcompress
เป้าหมายของปลั๊กอิน yuicompressor-maven-plugin
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
3) ในกรณีที่คุณไม่ต้องการให้ไฟล์ pom ของคุณเป็นมลพิษด้วยข้อมูลเมตานี้คุณสามารถจัดเก็บไฟล์นี้ไว้ในไฟล์ XML ภายนอก (ตัวเลือกที่ 3) ด้านล่างนี้เป็นไฟล์การแมปตัวอย่างซึ่งสั่งให้ m2e ละเว้นjslint
และcompress
เป้าหมายของปลั๊กอิน yuicompressor-maven
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
4) ในกรณีที่คุณไม่ชอบตัวเลือก 3 ตัวนี้คุณสามารถใช้ตัวเชื่อมต่อ m2e (ส่วนขยาย) สำหรับปลั๊กอิน maven ได้ตัวเชื่อมต่อจะให้ข้อมูลเมตาแก่ m2e คุณสามารถดูตัวอย่างข้อมูลเมตาดาต้าภายในเครื่องมือเชื่อมต่อที่ลิงค์นี้ คุณอาจสังเกตเห็นว่าข้อมูลเมตาหมายถึงตัวกำหนดค่า นั่นหมายความว่า m2e จะมอบหมายความรับผิดชอบให้กับคลาส java ที่จัดทำโดยผู้เขียนส่วนขยายผู้กำหนดค่าสามารถกำหนดค่าโครงการ (เช่นพูดว่าเพิ่มโฟลเดอร์ซอร์สเพิ่มเติมเป็นต้น) และตัดสินใจว่าจะเรียกใช้ปลั๊กอิน maven จริงในระหว่างการสร้างที่เพิ่มขึ้นหรือไม่ (ถ้า ไม่ได้รับการจัดการอย่างเหมาะสมภายในตัวกำหนดค่าอาจนำไปสู่การสร้างโครงการที่ไม่มีที่สิ้นสุด)
อ้างอิงลิงก์เหล่านี้สำหรับตัวอย่างของการกำหนดค่า ( link1 , link2 ) ดังนั้นในกรณีที่ปลั๊กอินเป็นสิ่งที่สามารถจัดการผ่านตัวเชื่อมต่อภายนอกคุณสามารถติดตั้งได้ m2e เก็บรักษารายการของตัวเชื่อมต่อดังกล่าวที่มีให้โดยนักพัฒนารายอื่นสิ่งนี้เรียกว่าแค็ตตาล็อกการค้นพบ m2e จะแจ้งให้คุณติดตั้งตัวเชื่อมต่อหากคุณยังไม่มีข้อมูลเมตาการทำแผนที่อายุการใช้งานสำหรับการดำเนินการผ่านตัวเลือกใด ๆ (1-6) และแค็ตตาล็อกการค้นพบมีส่วนขยายบางอย่างที่สามารถจัดการการดำเนินการได้
ภาพด้านล่างแสดงวิธีที่ m2e แจ้งให้คุณติดตั้งตัวเชื่อมต่อสำหรับ build-helper-maven-plugin
.
5) m2e สนับสนุนให้ผู้เขียนปลั๊กอินสนับสนุนการสร้างที่เพิ่มขึ้นและจัดหาการแมปวงจรชีวิตภายในปลั๊กอิน maven เองซึ่งหมายความว่าผู้ใช้จะไม่ต้องใช้การแมปวงจรการใช้งานหรือตัวเชื่อมต่อเพิ่มเติมผู้เขียนปลั๊กอินบางคนได้นำสิ่งนี้ไปใช้แล้ว
6) โดยค่าเริ่มต้น m2e จะเก็บข้อมูลเมตาการทำแผนที่วงจรชีวิตสำหรับปลั๊กอินที่ใช้กันทั่วไปเช่น maven-compiler-plugin และอื่น ๆ อีกมากมาย
ตอนนี้กลับไปที่คำถาม: คุณสามารถให้การทำแผนที่วงจรชีวิตแบบละเว้นใน 1, 2 หรือ 3 สำหรับเป้าหมายเฉพาะที่สร้างปัญหาให้กับคุณได้