ในบทความก่อนหน้านี้ (A22_Android02_Gradle) เราได้ทำความรู้จัก Gradle ซึ่งเป็น build tool ตัวหนึ่งไปแล้ว ในบทความนี้เราพาท่านผู้อ่านไปรู้จักกับ Maven ซึ่งถ้านับว่าเป็นพ่อของ Gradle ก็คงไม่ผิดนักกันครับ
Maven คือ build tool สำหรับโปรเจกต์ภาษาจาวาที่ช่วยจัดการขั้นตอนต่างๆในการ build ให้เป็นไปได้ง่ายขึ้นโดยมันจะดาวน์โหลด Library และ Maven Plug-in ที่ต้องใช้ในโปรเจกต์จากที่ต่างๆให้ นอกจากนี้ Maven ยังสามารถใช้ build โปรเจกต์ภาษา C#, Ruby, Scala ฯลฯ ได้อีกด้วย แต่เราจะไม่พูดถึงในที่นี้ เป้าหมายของ Maven[1] คือ
Maven เป็นภาษา Yiddish แปลว่า accumulator of knowledge เป็น open-source build tool พัฒนาโดย Apache Software Foundation
Maven เกิดมาในโปรเจกต์ Jakarta Alexandria ก่อนจะย้ายมาโปรเจกต์ Turbine ซึ่งที่โปรเจกต์นี้แหละครับที่มันได้ถูกทดลองใช้จริง ในตอนนั้นผู้พัฒนาโปรเจกต์ Turbine กำลังปวดหัวกับการต้อง build แยกแต่ละ layer ทั้งๆที่โดยพื้นฐานแล้วมันเหมือนกัน และการใช้ Apache Ant ก็ไม่ช่วยให้ชีวิตดีขึ้น Maven จึงถูกใช้เพื่อช่วยให้ขั้นตอนการ build ของโปรเจกต์ Jakarta Turbine สามารถทำได้ง่ายขึ้นครับ
โดย Maven จะใช้ XML form สำหรับเขียนไฟล์ configuration ซึ่งเรียกว่า Project Object Model หรือ POM (pom.xml) ในไฟล์นี้จะมีข้อมูลของ dependencies ต่างๆในโปรเจกต์, ลำดับการ build, directory และ plug-ins ที่ต้องใช้ ดังนั้นไฟล์นี้จึงถือเป็นแกนหลักของ Maven เลยครับ Maven ออกมาครั้งแรกในปี 2004 เวอร์ชันที่เสถียรล่าสุดคือเวอร์ชัน 3.6.1 ออกในปี 2019
ในบทความนี้เราจะมาทดลองใช้ Maven สร้างโปรเจกต์ Hello World กัน
ต้องขอชี้แจงก่อนว่าผมคิดว่าผู้อ่านที่จะใช้ Maven น่าจะมีพื้นฐานเขียนโปรแกรมกันอยู่แล้ว ดังนั้นผมจะขอไม่อธิบายเรื่องการติดตั้งโปรแกรมต่างๆหรือเรื่องอะไรที่เป็นความรู้พื้นฐานนะครับ
1. เปิด Command Prompt (ถ้าใครไม่รู้จักก็ขอให้ย้อนไปอ่านบทความ A14 Windows CommandLine) จากนั้นพิมพ์คำสั่งต่อไปนี้เพื่อตรวจสอบว่าเครื่องของเราลง Java เรียบร้อยแล้วหรือไม่
java -version
|
ถ้าลงเรียบร้อยแล้วจะขึ้นข้อความบอกเวอร์ชันที่ลง แต่ถ้าไม่ก็ให้ทำการติดตั้งเสียก่อนโดยดาวน์โหลดได้จาก https://www.oracle.com/technetwork/java/javase/downloads/index.html หรืออาจจะลง OpenJDK ก็ได้ และเมื่อติดตั้งเสร็จแล้วอย่าลืมเพิ่ม PATH ใน Environment variables ด้วยนะครับ เสร็จแล้วให้ปิดหน้าต่าง Command Prompt นี้ไปเลย
2. ดาวน์โหลด Maven โดยเข้าไปที่ https://maven.apache.org/download.cgi แล้วเลือกดาวน์โหลดไฟล์ที่ต้องการ สำหรับ Windows ให้โหลดตัว apache-maven-3.6.1-bin.zip
3. เมื่อดาวน์โหลดเสร็จแล้วจะได้ไฟล์ .zip มา ให้แตกไฟล์แล้วเอาโฟลเดอร์ชื่อ apache-maven-3.6.1 ที่ได้ออกมาไปใส่ใน C:\Program Files
4. ถ้าเข้าไปดูในโฟลเดอร์ C:\Program Files\apache-maven-3.6.1 จะเห็นว่ามีโฟลเดอร์ชื่อ bin อยู่
5. ให้ทำการเพิ่ม PATH ของโฟลเดอร์ชื่อ bin ในขั้นตอนที่ 4 เข้าไปใน Environment variables
6. เปิด Command Prompt ขึ้นมาใหม่ (สำหรับหน้าต่างในขั้นตอนที่ 1 ให้ปิดทิ้งไปได้เลย) แล้วทดสอบว่าการติดตั้ง Maven เสร็จเรียบร้อยดีไหมโดยพิมพ์คำสั่ง
mvn -v
|
ถ้าลงเรียบร้อยแล้วจะขึ้นข้อความบอกเวอร์ชันที่ลง แต่ถ้าไม่ก็ให้ลองตรวจสอบอีกครั้งว่า PATH ที่เพิ่มเข้าไปใน Environment variables ถูกต้องไหม จากนั้นปิด Command Prompt แล้วทำตามขั้นตอนที่ 6 อีกครั้งหนึ่ง
7. หลังจากติดตั้งเสร็จเรียบร้อยแล้ว ต่อไปเราจะมาสร้างโปรเจกต์กันครับ แต่ก่อนอื่นเราจะสร้างโฟลเดอร์ใหม่สำหรับให้โปรเจกต์นี้อยู่ก่อน ในที่นี้ผมสร้างโฟลเดอร์ชื่อ maven_test ขึ้นมาโดยคลิกขวาแล้วเลือก New > Folder
8. กลับมาที่ Command Prompt ใช้คำสั่ง cd เพื่อไปที่โฟลเดอร์ที่สร้างในขั้นตอนที่ 7 จากนั้นพิมพ์คำสั่ง mvn ... ตามด้านล่าง เพื่อสร้างโปรเจกต์ภาษาจาวาด้วย Maven
หมายเหตุ1: สำหรับคำสั่ง mvn ... ให้ copy คำสั่งทั้งหมดไปใส่ใน Command Prompt โดยไม่ต้องขึ้นบรรทัดใหม่เลยนะครับ
หมายเหตุ2: ถ้าเป็นการใช้ Maven ครั้งแรก จะต้องรอนานหน่อยนะครับ เนื่องจากมันจะโหลด Plugin และไฟล์ต่างๆลงเครื่องเราก่อน
cd [ตามด้วย maven_test directory]
|
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
|
9. หลังจากรอจนเสร็จ ถ้าเข้าไปดูในโฟลเดอร์ maven_test จะเห็นว่ามีโฟลเดอร์ชื่อ my-app เพิ่มขึ้นมาซึ่งเป็นชื่อเดียวกันกับที่เรากำหนดใน artifactId ในขั้นตอนที่ 8
10. และถ้าดูไฟล์ในโฟลเดอร์ my-app จะพบว่ามีโครงสร้างดังนี้
11. ลองเปิดไฟล์ App.java ในโฟลเดอร์ my-app\src\main\java\com\mycompany\app ขึ้นมาดูกันครับ (เปิดด้วยโปรแกรมเช่น Notepad หรือ Notepad++ ก็ได้ครับ) จะเห็นว่ามันมีโค้ดส่วนหนึ่งมาให้แล้ว สำหรับผู้ที่คุ้นเคยกับการเขียนโปรแกรมอยู่แล้วมองปุ๊บก็คงจะทราบได้ทันทีว่าโค้ดนี้จะแสดงผล Hello World! ออกมาเมื่อรันโปรแกรมนั่นเองครับ
12. ต่อไปเราจะมา build โปรเจกต์นี้เพื่อสร้างไฟล์ JAR กัน โดยเข้าไปใน directory my-app ด้วยคำสั่ง cd แล้ว build โปรเจกต์ด้วยคำสั่ง mvn package
cd my-app
|
mvn package
|
13. รอจน build เสร็จ จะขึ้นข้อความคล้ายๆในภาพ และเมื่อเข้าไปดูในโฟลเดอร์ my-app จะเห็นว่ามีโฟลเดอร์ชื่อ target เพิ่มขึ้นมา
14. เมื่อเข้าไปดูในโฟลเดอร์ target จะพบว่ามีไฟล์ my-app-1.0-SNAPSHOT.jar
15. มาลองรันไฟล์ JAR ที่ได้ออกมานี้ด้วยคำสั่งต่อไปนี้กันครับ จะเห็นว่าได้ผลลัพธ์คือ Hello World! ออกมา เย้
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
|
เสร็จแล้วครับ ไม่ยากใช่ไหมครับ ถ้าอยากเรียนรู้เพิ่มเติมหรือลองทำอย่างอื่นเพิ่มเติมก็สามารถอ่านได้จาก document ใน [1] ซึ่งเขียนไว้ละเอียดดีมากๆครับ
เช่นเดียวกับ Gradle Maven ช่วยลดขั้นตอนและประหยัดเวลาเรื่องการ build App ไปได้อย่างมากโดยสามารถตั้งค่าต่างๆให้กับ App ของเราเวลา build ได้แทบทุกอย่างผ่านทางไฟล์ pom.xml เช่น จะ build โปรเจกต์ไหนบ้าง ข้อมูลเกี่ยวกับการ build เป็นอย่างไร ต้องใช้ Library หรือ Plugin หรือ Resource อะไรบ้าง ฯลฯ นอกจากในตัวอย่างด้านบนที่เป็นโปรเจกต์ชนิด quickstart แล้ว Maven ยังมี template ของโปรเจกต์อีกหลายชนิดให้เราสร้าง เช่น webapp เป็นต้น
และแน่นอนว่าเวลาเราเขียนโปรแกรมเชิงธุรกิจที่ซับซ้อนขึ้น เราคงไม่เขียนทุกอย่างด้วยตัวเองตั้งแต่ศูนย์ สิ่งที่เราควรทำคือดูว่ามี Library อะไรที่ method ของมันสามารถทำงานที่เราต้องการได้ ซึ่ง Maven ก็จะมาช่วยจัดการเรื่องการโหลด Library หรือ Plugin ต่างๆที่โปรเจกต์ของเราต้องใช้ (ที่เราเขียนกำหนดไว้ในไฟล์ pom.xml) ให้แบบครบๆไม่ต้องปวดหัวกันครับ
การเขียนโปรแกรมภาษา Java นั้นไม่จำเป็นต้องมีความรู้เรื่องการเขียนโปรแกรมใดๆมาก่อนเลย ขอเพียงมีความรู้พื้นฐานคณิตศาสตร์ม.ต้นและม.ปลายบางอย่าง มีความรู้ภาษาอังกฤษพื้นฐานเล็กน้อยให้พออ่าน Document ได้ และความตั้งใจครับ
ถ้าผู้อ่านสนใจอยากเรียนรู้อย่างลึกซึ้ง นำไปใช้ต่อยอดได้จริง ก็ขอแนะนำคอร์ส Java J104 ของทาง EPT ซึ่งในคอร์สนี้จะสอนตั้งแต่พื้นฐานไปจนถึงขั้น Advance เลยครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่ และที่ดีที่สุดคุ้มที่สุดครอบคลุมที่สุดคือคอร์ส Web Programming PHP101-J ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540
แล้วพบกันใหม่บทความหน้านะครับ
[1] https://maven.apache.org
[2] https://gitbox.apache.org/repos/asf?p=maven.git
Tag ที่น่าสนใจ: maven build_tool java apache_software_foundation project_object_model pom dependencies xml maven_installation command_prompt java_installation apache_maven maven_project maven_archetype artifactid
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM