Maven คืออะไรและใช้ทำอะไร


Maven เป็นเครื่องมือที่ใช้ช่วยเราในการ build project  และช่วยหา library ให้เราอัตโนมัติครับเขาเรียกว่า build/project management tool. ที่นี้เป้าหมายหลักที่เราจะใช้งาน Maven นั้นก็คือ

  1. ใช้ Build Project
  2. หา library (Dependency)
จากประสบการณ์ที่ผมเคยใช้ Maven ผมได้ใช้กับ Java และใช้ Eclipse เป็น Editor โดยหลักๆแล้วถ้าเราอยากจะใช้ Maven อย่างน้อยๆเราจำเป็นต้องรู้ว่า pom.xml คืออะไร เพราะในไฟล์ pom.xml นั้นจะเป็นไฟล์ config ของ Maven ครับ

Configuration Maven

ใน pom.xml จะมีรายละเอียดหลักๆ มากมาย ยกตัวอย่าง เช่น 

  • สั่งให้ Maven ไป Build Project ไหนบ้าง(กรณีมีหลายๆโมดูลและแบ่งแต่ละโมดูลออกมาเป็นโปรโจค เราสามารถสั่งให้ build ทีเดียวทุกโปรเจคที่เกี่ยวข้องได้เลย) 
  • สั่งว่าเวลา Build Project เสร็จจะให้เอา war file ที่ build เสร็จไปวางไว้ที่ไหน
  • สั่งว่าจะให้ไปโหลด library (jar file) มาจากเว็บไหน

Step การหา Library ของ Maven
เมื่อเราทราบแล้วว่า Maven มันจะช่วยในการ Build Project ของเราและมันก็สามารถค้นหา library ให้เราได้อย่างอัตโนมัติ ซึ่งแน่นอนว่าเราจำเป็นต้องใช้ Internet ในการให้ Maven ไปค้นหา jar จาก Central Repository(เว็บหลักของ Meven ที่รวม library) ซึ่งขั้นตอนที่ Maven จะทำการหา library นั้นไม่ได้หมายความว่ามันจะไปดาวโหลดมาใหม่ทุกครั้งที่เรา Build project นะครับ มันจะโหลดแค่ครั้งเดียวมาเก็บลงบนเครื่องเราและถ้ามีเวอร์ชั่นใหม่เท่านั้นมันถึงจะดาว์โหลดให้เราใหม่ครับ แต่เราก็สามารถกำหนดได้นะครับว่าให้มันไม่ต้องดาว์โหลดโดยการ setting offline(คือบังคับให้ใช้แค่ library ที่มีอยู่บนเครื่องเท่านั้น) เอาล่ะครับมาดู Step จริงของมันกันดีกว่าว่ามันเริ่มหาจากที่ไหนก่อน
  1. Local Repository (ค้นหาจากบนเครื่องเรา)
  2. Central Repository (ค้นหาจากเว็บกรณีที่หาใน Local แล้วไม่เจอ)
  3. Remote Repository (ค้นหาจากเว็บที่เรากำหนดไว้บน pom.xml กรณีที่ค้นหาจากทั้งสองข้อด้านบนแล้วไม่เจอ)
ประมาณนี้ครับ ส่วนเรื่องการ config pom.xml ผมไม่ขอลงรายละเอียดนะครับ เพราะความรู้ของผมตอนนี้มีเท่านี้ครับ ขาดตกบกพร่อง เข้าใจอะไรผิดไป ติชม หรือคอมเมนได้เลยนะครับ ผมจะได้ทำการแก้ไขให้ถูกต้อง คนที่เข้ามาอ่านจะได้ไม่เข้าใจไปแบบผิดๆ ถ้ามีโอกาสจะมาอัพเดดเพิ่มเติมนะครับ

ChaowKung

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard. Google

1 ความคิดเห็น: