โค้ดยิม/หลักสูตรจาวา/โมดูล 3/การจัดการไฟล์ในขณะที่สร้างโครงการ Maven

การจัดการไฟล์ในขณะที่สร้างโครงการ Maven

ระดับ, บทเรียน
มีอยู่

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>เป็นจริง

ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ