หมวดหมู่: Spring Boot

Java: Apache MavenJava: Apache Maven

Apache Maven คือเครื่องมือจัดการโปรเจกต์ ที่ได้รับความนิยมสูงสุดในโลกของ Java โดยใช้แนวคิด POM เพื่อช่วยในการสร้าง , จัดการไลบรารี , และวางมาตรฐานโครงสร้างโปรเจกต์ให้เป็นระบบเดียวกัน


ทำความรู้จักกับไฟล์ pom.xml

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

  • Coordinates: ระบุตัวตนของโปรเจกต์ด้วย groupId, artifactId, และ version
  • Dependencies: รายชื่อไลบรารีภายนอกที่ต้องใช้
  • Plugins: เครื่องมือเสริมสำหรับขั้นตอนการ Build เช่น การสร้างไฟล์ .jar หรือการทำ Unit Test

โครงสร้างโฟลเดอร์มาตรฐาน

Maven บังคับใช้โครงสร้างโฟลเดอร์ที่เป็นมาตรฐานเดียวกันทั่วโลก เพื่อให้ Developer คนอื่นสามารถเข้าใจโปรเจกต์ได้ทันที

  • src/main/java: เก็บ Source Code หลักของภาษา Java
  • src/main/resources: เก็บไฟล์ตั้งค่าต่าง ๆ
  • src/test/java: เก็บไฟล์สำหรับการทำ Unit Test
  • target: โฟลเดอร์ที่ระบบสร้างขึ้นเพื่อเก็บไฟล์ที่ Build เสร็จแล้ว

คำสั่งพื้นฐานที่ต้องรู้

การสั่งงาน Maven มักจะทำผ่าน Command Line โดยมีวงจรชีวิต ที่สำคัญดังนี้

คำสั่งหน้าที่
mvn cleanลบโฟลเดอร์ target เพื่อล้างไฟล์เก่าทิ้ง
mvn compileCompile Code จากไฟล์ .java เป็น .class
mvn testรัน Unit Test ทั้งหมดในโปรเจกต์
mvn packageรวบรวมไฟล์ทั้งหมดออกมาเป็นไฟล์ที่พร้อมใช้งาน (เช่น .jar หรือ .war)
mvn installนำไฟล์ที่ Build เสร็จไปเก็บไว้ใน Local Repository ของเครื่องเราเอง

การจัดการ Dependency

ข้อดีที่สุดของ Maven คือเราไม่ต้องไปไล่ดาวน์โหลดไฟล์ .jar มาวางในโปรเจกต์เอง เพียงแค่ระบุ code ใน pom.xml ดังนี้

<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.1.0</version> </dependency>
</dependencies>

Maven จะไปดาวน์โหลดไลบรารีจาก Maven Central Repository มาให้โดยอัตโนมัติ พร้อมกับจัดการไลบรารีอื่น ๆ ที่เกี่ยวข้อง ให้ด้วย


ทำไมต้องใช้ Maven ?

  • ประหยัดเวลา: ไม่ต้องกังวลเรื่องการจัดการ Version ของ Library ที่ขัดกัน
  • มาตรฐานเดียวกัน: ทุกโปรเจกต์ที่ใช้ Maven จะมีโครงสร้างเหมือนกัน ทำให้รับช่วงต่อได้ง่าย
  • Automation: สามารถทำงานร่วมกับเครื่องมือ CI/CD ได้อย่างไร้รอยต่อ

สรุป

Maven ไม่ใช่แค่เครื่องมือดาวน์โหลดไลบรารี แต่เป็นเฟรมเวิร์กในการคุมมาตรฐานการพัฒนาซอฟต์แวร์ ช่วยให้ Developer โฟกัสไปที่การเขียน Code มากกว่าการมานั่งแก้ปัญหาเรื่องการตั้งค่าสภาพแวดล้อม


อ่านเพิ่มเติม