2.1 ปลั๊กอินคัดลอกทรัพยากร maven-resources-plugin
หากคุณกำลังสร้างเว็บแอปพลิเคชัน คุณก็จะมีทรัพยากรมากมายในนั้น เหล่านี้คือไลบรารี่ของ jar, เซิร์ฟเล็ต jsp, ไฟล์การตั้งค่า และแน่นอนว่านี่คือไฟล์สแตติกจำนวนมาก เช่นhtml
, css
, js
, รวมถึงรูปภาพต่างๆ
ตามค่าเริ่มต้น เมื่อสร้างโปรเจ็กต์ Maven จะคัดลอกไฟล์ทั้งหมดของคุณจากโฟลเดอร์src/main/resources
ไปยังไดเร็กทอรีเป้าหมาย หากคุณต้องการเปลี่ยนแปลงพฤติกรรมนี้ ปลั๊กอินจะช่วยคุณmaven-resources-plugin
ได้
โค้ดตัวอย่างสำหรับปลั๊กอินดังกล่าว:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
${basedir}/target/resources
</outputDirectory>
<resources>
<resource> instructions for copying a resource 1 </resource>
<resource> instructions for copying a resource 2 </resource>
<resource> instructions for copying a resource N </resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
ปลั๊กอินนี้จะถูกเรียกใช้ในระหว่างขั้นตอนการตรวจสอบความถูกต้อง เมื่อใช้แท็ก<outputDirectory>
คุณสามารถตั้งค่าไดเร็กทอรีที่ปลั๊กอินควรคัดลอกทรัพยากรที่ระบุในไฟล์<resources>
. และนี่คือที่ที่ปลั๊กอินสามารถเปิดออกได้อย่างเต็มที่
2.2 การกรองทรัพยากรด้วยปลั๊กอิน maven-resources
ทรัพยากรปลั๊กอินสามารถระบุได้ไม่เพียง แต่ในรูปแบบของไฟล์เท่านั้น แต่ยังระบุได้ทันทีในรูปแบบของไดเร็กทอรี นอกจากนี้ยังสามารถเพิ่มหน้ากากลงในไดเร็กทอรีซึ่งระบุว่าไฟล์ใดที่จะรวมอยู่ในทรัพยากรนี้
ตัวอย่าง:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
เครื่องหมายดอกจันสองตัวเป็นตัวพรางแทนไดเร็กทอรีจำนวนเท่าใดก็ได้ ในตัวอย่างข้างต้น ไฟล์ png ทั้งหมดที่อยู่ในไดเร็กทอรีsrc/main/resources/images
(และไดเร็กทอรีย่อย) จะใช้เป็นข้อมูลทรัพยากร
หากต้องการยกเว้นบางไฟล์ คุณสามารถใช้ไฟล์exclude
. ตัวอย่าง:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
<excludes>
<exclude>old/*.png</exclude>
</excludes>
</resource>
มีการใช้แท็กตามลำดับ: ขั้นแรก ไฟล์รวมที่ระบุในไฟล์รวมจะถูกเพิ่มไปยังทรัพยากร จากนั้นไฟล์ที่แยกออกจะถูกแยกออกจากรายการนี้
แต่นั่นไม่ใช่ทั้งหมด ปลั๊กอินสามารถดูไฟล์ภายในได้ (หากเป็นข้อความ) และตัวอย่างเช่น เพิ่มapplication.properties
แอสเซมบลีเวอร์ชันที่ต้องการลงในไฟล์ เพื่อให้ปลั๊กอินประมวลผลเนื้อหาของไฟล์ คุณต้องระบุ<filtering>true</filtering>
พารามิเตอร์
ตัวอย่าง:
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
<includes>
<include>**/*. properties </include>
</includes>
</resource>
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับปลั๊กอินนี้ได้ที่ลิงค์: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
2.3 ปลั๊กอินการรวมแหล่งที่มาของปลั๊กอิน maven-source-plugin
ปลั๊กอินที่มีประโยชน์อีกตัว - maven-source-plugin
ช่วยให้คุณสามารถรวมซอร์สโค้ดของไฟล์จาวาของคุณในแอสเซมบลี เพื่ออะไร?
สิ่งสำคัญคือนอกเหนือจากเว็บแอปพลิเคชันแล้ว Maven ยังมีไลบรารี่จำนวนมากที่ประกอบเข้าด้วยกัน โปรเจ็กต์ Java จำนวนมากทำตามแนวคิดของโอเพ่นซอร์สและเผยแพร่ไปยังชุมชน Java ด้วยซอร์สของตนเอง
ทำไมคุณต้องใช้ปลั๊กอินแยกต่างหาก ทำไมคุณไม่สามารถคัดลอกแหล่งที่มาและนั่นคือทั้งหมด
ประการแรก ในโครงการที่ซับซ้อนใดๆ แหล่งข้อมูลสามารถจัดเก็บได้หลายที่
ประการที่สอง มักจะใช้การสร้างแหล่งที่มาตามข้อกำหนด xml แหล่งที่มาดังกล่าวจำเป็นต้องรวมไว้ในชุดประกอบด้วย
และประการที่สาม คุณสามารถเลือกที่จะไม่รวมไฟล์ลับเฉพาะใดๆ ไว้ในแอสเซมบลีของคุณ
ตัวอย่างของการใช้ปลั๊กอิน maven-source-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
2.4 ปลั๊กอินคัดลอกการพึ่งพาปลั๊กอิน maven-dependency-plugin
คุณอาจต้องคัดลอกการพึ่งพา (ไลบรารี) อย่างชาญฉลาดเมื่อสร้างโครงการ ปลั๊กอินใช้สำหรับสิ่งmaven-dependency-plugin
นี้
ตัวอย่าง:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
ในตัวอย่างนี้ ลักษณะการทำงานเริ่มต้นของปลั๊กอินคือเขียน - คัดลอกไลบรารีไปยังไฟล์${project.build.directory}/lib
.
ส่วนการดำเนินการระบุว่าปลั๊กอินจะถูกเรียกใช้ในระหว่างขั้นตอนการสร้าง - แพ็คเกจ เป้าหมาย - การคัดลอกการพึ่งพา
โดยทั่วไปแล้ว ปลั๊กอินนี้มีเป้าหมายที่ค่อนข้างใหญ่ นี่คือเป้าหมายที่ได้รับความนิยมมากที่สุด:
1 | การพึ่งพา: วิเคราะห์ | การวิเคราะห์การพึ่งพา (ใช้ ไม่ได้ใช้ ระบุ ไม่ระบุ) |
2 | การพึ่งพา: วิเคราะห์ซ้ำ | การระบุการอ้างอิงที่ซ้ำกัน |
3 | การพึ่งพา: แก้ไข | ความละเอียด (คำจำกัดความ) ของการพึ่งพาทั้งหมด |
4 | การพึ่งพา: แก้ไขปลั๊กอิน | การอนุญาต (คำจำกัดความ) ของปลั๊กอินทั้งหมด |
5 | พึ่งพา:ต้นไม้ | แสดงต้นไม้ขึ้นต่อกัน |
คุณยังสามารถตั้งค่าพารามิเตอร์เพิ่มเติมในส่วนการกำหนดค่า:
1 | ไดเรกทอรีผลลัพธ์ | ไดเร็กทอรีที่จะคัดลอกการอ้างอิง |
2 | overWriteReleases | ตั้งค่าสถานะเพื่อเขียนทับการอ้างอิงเมื่อสร้างรุ่น |
3 | overWriteSnapshots | ตั้งค่าสถานะเพื่อเขียนทับการขึ้นต่อกันที่ไม่ใช่เทอร์มินัลที่มี SNAPSHOT |
4 | มากกว่าเขียนถ้าใหม่กว่า | ตั้งค่าสถานะเพื่อเขียนทับไลบรารีด้วยเวอร์ชันที่ใหม่กว่า |
ตัวอย่าง:
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
โดยค่าเริ่มต้น<overWriteReleases>
และ<overWriteSnapshots>
เป็นเท็จ สำหรับ<overWriteIfNewer>
เป็นจริง
GO TO FULL VERSION