สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Apache Maven

Maven การตั้งค่าและใช้งานพื้นฐาน - ติดตั้ง Maven Maven การตั้งค่าและใช้งานพื้นฐาน - สร้างโปรเจกต์ Maven ใหม่ Maven การตั้งค่าและใช้งานพื้นฐาน - สร้างไฟล์ pom.xml Maven การตั้งค่าและใช้งานพื้นฐาน - การเพิ่ม Dependencies ใน pom.xml Maven การตั้งค่าและใช้งานพื้นฐาน - การ Build โปรเจกต์ Maven Maven การตั้งค่าและใช้งานพื้นฐาน - การใช้ Plugins ใน pom.xml Maven การตั้งค่าและใช้งานพื้นฐาน - การ Clean โปรเจกต์ Maven Maven การตั้งค่าและใช้งานพื้นฐาน - การสร้างไฟล์ JAR หรือ WAR Maven การตั้งค่าและใช้งานพื้นฐาน - การรันโปรเจกต์ Maven Maven การตั้งค่าและใช้งานพื้นฐาน - การรัน Unit Test Maven การจัดการ Dependencies และ Plugins - การตั้งค่า Dependency Scope Maven การจัดการ Dependencies และ Plugins - การใช้ Profiles ใน pom.xml Maven การจัดการ Dependencies และ Plugins - การตั้งค่า Repository ภายนอก Maven การจัดการ Dependencies และ Plugins - การเพิ่ม Plugins สำหรับการทำงานพิเศษ Maven การจัดการ Dependencies และ Plugins - การจัดการ Multi-Module Project Maven การจัดการ Dependencies และ Plugins - การใช้ Dependency Management ในโปรเจกต์ Multi-Module Maven การจัดการ Dependencies และ Plugins - การจัดการ Dependency Version ด้วย BOM (Bill of Materials) Maven การจัดการ Dependencies และ Plugins - การ Exclude Dependencies ที่ไม่ต้องการ Maven การจัดการ Dependencies และ Plugins - การทำ Dependency Resolution Maven การจัดการ Dependencies และ Plugins - การสร้าง Repository Local Cache Maven การทดสอบและการตั้งค่าโปรไฟล์ - การสร้าง Custom Maven Plugin Maven การทดสอบและการตั้งค่าโปรไฟล์ - การสร้าง Site รายงานของโปรเจกต์ Maven การทดสอบและการตั้งค่าโปรไฟล์ - การสร้าง Javadoc อัตโนมัติ Maven การทดสอบและการตั้งค่าโปรไฟล์ - การทำ Continuous Integration (CI) ด้วย Jenkins และ Maven Maven การทดสอบและการตั้งค่าโปรไฟล์ - การใช้ Maven Assembly Plugin เพื่อสร้างไฟล์ ZIP หรือ TAR Maven การทดสอบและการตั้งค่าโปรไฟล์ - การทำ Release ด้วย Maven Maven การทดสอบและการตั้งค่าโปรไฟล์ - การตั้งค่า Maven เพื่อทำงานกับ Proxy Server Maven การทดสอบและการตั้งค่าโปรไฟล์ - การใช้งาน Maven กับ Docker Maven การทดสอบและการตั้งค่าโปรไฟล์ - การตั้งค่า Maven Wrapper Maven การทดสอบและการตั้งค่าโปรไฟล์ - การใช้ Lifecycle Phases ของ Maven

Maven การจัดการ Dependencies และ Plugins - การตั้งค่า Dependency Scope

 

Maven เป็นเครื่องมือสำหรับการจัดการการสร้างโปรเจ็กต์ (build tool) ที่นิยมใช้ในโลกของการพัฒนา Java ซึ่งมีฟีเจอร์ที่ช่วยให้นักพัฒนาจัดการกับ dependencies ของโปรเจ็กต์ได้อย่างมีประสิทธิภาพ นอกจากนี้ยังสามารถจัดการกับ plugins ได้อย่างยืดหยุ่นเพื่อเพิ่มความสามารถต่างๆ ในกระบวนการ build

หนึ่งในจุดเด่นของ Maven คือความสามารถในการจัดการกับ "dependency scope" ซึ่งช่วยให้คุณสามารถกำหนดได้ว่า dependencies ใดควรจะใช้งานในขั้นตอนไหนของกระบวนการ build เช่น การ compile, การ test, หรือการ runtime

 

Dependency Scope ใน Maven

Dependency scope คือการกำหนดขอบเขตการใช้งานของ dependencies ภายในโปรเจ็กต์ ซึ่ง Maven ให้เราสามารถกำหนดได้ผ่าน POM (Project Object Model) file โดยมี scope หลักๆ ดังนี้:

1. compile: เป็นค่า default หากไม่กำหนด scope ใดๆ จะถูกตั้งค่าเป็น compile scope ทำให้ dependency ใช้ได้ทั้งในขั้นตอน compile, test, และ runtime

2. provided: ทำให้ dependency สามารถใช้ได้ในขั้นตอน compile และ test แต่ไม่ควรรวมอยู่ใน JAR หรือ WAR ที่ถูกสร้าง เนื่องจากคาดว่าจะมีอยู่แล้วใน runtime environment (เช่น libraries ของเซิร์ฟเวอร์)

3. runtime: ใช้ในขั้นตอน runtime และ test แต่ไม่จำเป็นต้องใช้ตอน compile (dependency จะถูกจัดเตรียมให้เมื่อใช้งานจริง)

4. test: ถูกใช้เฉพาะในขั้นตอนการ test เท่านั้น ไม่รวมในการ compile หรือ runtime ของโปรเจ็กต์

5. system: คล้ายกับ provided แต่ dependency จำเป็นต้องอ้างอิงไปยังไฟล์ในระบบที่กำหนดอย่างชัดเจน

6. import: เฉพาะในกรณีที่ใช้งานกับ dependency management ซึ่งทำให้ POM สามารถนำเข้า dependencies ทั้งหมดจาก BOM (Bill Of Materials) มาใช้งาน

 

Usecase และตัวอย่าง

สมมติว่าเรากำลังพัฒนาแอพพลิเคชันที่ใช้ Spring Framework และต้องการจัดการ dependencies ให้เหมาะสมกับความต้องการ ดังนี้


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>3.0.0</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

ในตัวอย่างนี้ แสดงให้เห็นถึงการตั้งค่า dependency scope หลายแบบ:

- Spring Boot Starter ถูกตั้งเป็น `compile` เพราะเราต้องการใช้งานทั้งในขั้นตอนการ compile และ runtime - Spring Boot Starter Test ถูกตั้งเป็น `test` เพราะเราใช้งานเพียงในขั้นตอนการทดสอบเท่านั้น - Servlet API ถูกตั้งเป็น `provided` เนื่องจากคาดว่าเซิร์ฟเวอร์จะมีอยู่แล้ว (เช่น Tomcat)

ภายในโปรเจ็กต์เดียวกัน การตั้งค่า dependency scope ที่ถูกต้องยังสามารถลดปัญหาการโหลด class ที่ซ้ำซ้อนหรือ unnecessary ในระหว่าง runtime ได้ ซึ่งเป็นผลดีทั้งทางด้านประสิทธิภาพและการบำรุงรักษาระบบ

 

Maven Plugins และความสัมพันธ์

นอกจากการจัดการ dependencies, Maven ยังสามารถใช้งานกับ plugins ที่หลากหลายเพิ่มฟีเจอร์เพิ่มเติมให้กับกระบวนการ build เช่น การทำ clean, compile, package และ deploy

ตัวอย่างของการใช้งาน Maven Plugins:


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
        </plugin>
    </plugins>
</build>

ในตัวอย่างนี้:

- Maven Compiler Plugin ช่วยให้เรากำหนด Java version ในการ compile source code - Maven Surefire Plugin ถูกใช้สำหรับการเรียกใช้งาน unit test ในขั้นตอน build

ทั้ง plugins และ dependencies เป็นสองส่วนที่เชื่อมโยงกันในระดับของ POM file ทำให้ Maven เป็นที่นิยมและเป็นที่ยอมรับในการจัดการโปรเจ็กต์ที่ซับซ้อน

การควบคุม dependencies อย่างมีประสิทธิภาพเป็นสิ่งสำคัญสำหรับนักพัฒนา และการเข้าใจในเรื่องของ dependency scope จะช่วยให้โปรเจ็กต์ไม่เพียงมีโครงสร้างที่ดีขึ้น แต่ยังช่วยลดความซับซ้อนและปัญหาที่อาจเกิดขึ้นในภายหลังได้

สำหรับผู้ที่สนใจจะพัฒนาทักษะในด้านการจัดการ dependencies และตั้งค่า Maven อย่างมีประสิทธิภาพ การศึกษาเพิ่มเติมและฝึกปฏิบัติกับโปรเจ็กต์จริงจะช่วยเพิ่มความเชี่ยวชาญได้ ไม่ว่าจะเป็นการเรียนรู้ด้วยตัวเองหรือเข้าร่วมคอร์สการเรียนการสอน เช่นที่ EPT ที่พร้อมให้คำแนะนำและการอบรมที่ครอบคลุมสำหรับนักพัฒนาในสาขานี้.

 

 

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

หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/


Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา