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

Tutorial Web Programming

A01 JavaScript01 HelloWorld A02 JavaScript02 HelloWorld by Class A03 JavaScript03 Object A04 JavaScript04 Prototype A05 JavaScript05 Closure A06 NodeJS01 HelloWorld A07 npm01 Intro A08 React01 HelloWorld A09 AngularJS01 HelloWorld A10 VueJS01 HelloWorld A11 webpack01 Intro A12 ASPNET01 HelloWorld A13 Flask01 HelloWorld A14 Windows CommandLine A15 GoogleCloudPlatform Product A16 GoogleAppEngine01 HelloWorld A17 WhatIs01 WebServer A18 WhatIs02 API A19 WhatIs03 Linux A20 Linux CommandLine A21 Android01 HelloWorld A22 Android02 Gradle A23 Maven HelloWorld A24 Nancy HelloWorld A25 WhatIs04 Protocol A26 HowTo01 Install Ubuntu Desktop A27 HowTo02 Install WebServer on Ubuntu

A23_Maven_HelloWorld

ในบทความก่อนหน้านี้ (A22_Android02_Gradle) เราได้ทำความรู้จัก Gradle ซึ่งเป็น build tool ตัวหนึ่งไปแล้ว ในบทความนี้เราพาท่านผู้อ่านไปรู้จักกับ Maven ซึ่งถ้านับว่าเป็นพ่อของ Gradle ก็คงไม่ผิดนักกันครับ

Maven คืออะไร

Maven คือ build tool สำหรับโปรเจกต์ภาษาจาวาที่ช่วยจัดการขั้นตอนต่างๆในการ build ให้เป็นไปได้ง่ายขึ้นโดยมันจะดาวน์โหลด Library และ Maven Plug-in ที่ต้องใช้ในโปรเจกต์จากที่ต่างๆให้ นอกจากนี้ Maven ยังสามารถใช้ build โปรเจกต์ภาษา C#, Ruby, Scala ฯลฯ ได้อีกด้วย แต่เราจะไม่พูดถึงในที่นี้ เป้าหมายของ Maven[1] คือ

  • Making the build process easy
  • Providing a uniform build system
  • Providing quality project information
  • Providing guidelines for best practices development
  • Allowing transparent migration to new features

ประวัติ Maven

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

Project Hello world

ในบทความนี้เราจะมาทดลองใช้ 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 จะพบว่ามีโครงสร้างดังนี้

  • src/main/java directory จะเป็นที่เก็บ project source code
  • src/test/java directory จะเป็นที่เก็บ test source
  • ไฟล์ pom.xml คือ Project Object Model หรือ POM ซึ่งเป็นตัวตั้งค่าต่างๆเกี่ยวกับการ build ของโปรเจกต์นี้

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] ซึ่งเขียนไว้ละเอียดดีมากๆครับ

ประโยชน์ของ Maven ในแง่ธุรกิจ

เช่นเดียวกับ 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

การเขียนโปรแกรมภาษา 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

 



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

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

หรือติดต่อ

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

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

Python

L16 PYTHON SIMPLE ARITHMETIC
L40 PYTHON TUTORIAL INTRO
L41 PYTHON GETTING STARTED
L42 PYTHON SYNTAX
L43 PYTHON COMMENTS
L44 PYTHON VARIABLES
L45 PYTHON DATATYPE
L46 PYTHON NUMBERS
L47 PYTHON CASING
L48 PYTHON STRINGS
L49 PYTHON BOOLEANS
L50 PYTHON OPARETORS
L51 PYTHON LISTS
L52 PYTHON TUPELS
L53 PYTHON SETS
L54 PYTHON DICTIONARY
L55 PYTHON IF ELSE
L56 PYTHON WHILE LOOP
L57 PYTHON FOR LOOP
L58 PYTHON FUNCTION
L59 PYTHON LAMBDA
L60 PYTHON ARRAYS
L61 PYTHON CLASSSES OBJECTS
L62 PYTHON INHERITANCE
L63 PYTHON ITERATORS
L63 PYTHON SCOPE
L64 PYTHON MODULES
L65 PYTHON DATETIME
L66 PYTHON JSON
L67 PYTHON REGEX
L68 PYTHON PIP
L69 PYTHON TRY EXCAPE
L70 PYTHON USER INPUT
L71 PYTHON FILE OPEN
L73 PYTHON STRING FORMATTING
L74 PYTHON READ FILE
L75 PYTHON WRILE CREATE FILE
L76 PYTHON DELETE FILE
L90 PYTHON POISSON DISTRIBUTION
L90 PYTHON RANDOM INTRODUCTION
L91 PYTHON CHI SQUARE DISTRIBUTION
L91 PYTHON EXPONENTIAL DISTRIBUTION
L92 PYTHON RAYLEIGH DISTRIBUTION
L93 PYTHON PARETO DISTRIBUTION
L94 PYTHON ZIPF DISTRIBUTION
L96 PYTHON RANDOM PERMUTATIONS
L97 PYTHON SEABORN
L98 PYTHON NORMAL DISTRIBUTION
L99 PYTHON DISTRIBUTION
L99 PYTHON LOGISTIC DISTRIBUTION
L99 PYTHON MULTINOMIAL DISTRIBUTION
L99 PYTHON NUMPY SPLITTING ARRAY
L99 PYTHON NUMPY UFUNCS
L99 PYTHON UNIFORM DISTRIBUTION
LM60PYTHON BUILT IN FUNCTIONS
LM61PYTHON STRING METHODS
LM62PYTHON LIST ARRAY METHODS
LM63PYTHON DICTIONARY METHODS
LM64PYTHON TUPLE METHODS
LM65PYTHON SET METHODS
LM66PYTHON FILE METHODS
LM67PYTHON KEYWORD
LM68PYTHON BUILT IN EXCAPTION
LM69PYTHON RANDOM MODULE
LM70PYTHON MATH MODULE
LM70PYTHON REQUSTS MODULE
LM72PYTHON CMATH MODULE
LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST
LM74PYTHON HOW TO REVERSE A STRING IN PYTHON
LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON
LM95PYTHON RANDOM DATA DISTRIBUTION


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

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
แผนที่ ที่ตั้งของอาคารของเรา