
Image from https://www.educba.com/maven-commands/
ผมเขียนอธิบายอย่างละเอียดไว้ในบทความนี้แล้ว
เมื่อเราติดตั้ง Maven แล้ว ลองทดสอบง่าย ๆ ว่า คำสั่ง maven สามารถใช้งานได้รึเปล่า โดยการพิมพ์คำสั่ง mvn ดู ดังนี้
$ mvn
ถ้าใช้งานได้ จะมี Error ขึ้นประมาณนี้

ถ้าไม่ได้ ลองหาทาง set MAVEN_HOME ดูครับ
ก่อนที่จะใช้งานคำสั่งใด ๆ ต่อไปนี้ ให้เรา
cd(Change Directory) ไปที่ root ของ Maven Project นั้น ๆ ก่อน
เพื่อดูว่า maven ใช้งานยังไง (Help)
$ mvn -h

จากภาพด้านบน ทำให้เรารู้ว่า ถ้าจะใช้งานคำสั่ง mvn จะต้องพิมพ์คำสั่งใน Format นี้
$ mvn [options] [<goal(s)>] [<phase(s)>]
-v เป็น Option ใช้สำหรับตรวจสอบ Version ของ maven ที่เรากำลังใช้งานอยู่
$ mvn -v

เป็น Goal ใช้สำหรับลบโฟล์เดอร์ target (Compiled Code) ออกจาก Project

ใช้สำหรับการ Compile (Source Code) .java ในโฟลเดอร์ /src/main/java ไปเป็น .class ในโฟลเดอร์ /target/classes/ (ไม่มีการ Copy Resources ใน /src/main/resources/ ไปด้วย)
$ mvn compiler:compile

ใช้สำหรับการ Compile (Source Code) .java ในโฟลเดอร์ /src/main/java/ ไปเป็น .class ในโฟลเดอร์ /target/classes/ (รวมทั้ง Copy Resources ใน /src/main/resources/ ไปด้วย)

ใช้สำหรับการ Compile (Test Code) .java ในโฟลเดอร์ /src/test/java/ ไปเป็น .class ในโฟลเดอร์ /target/test-classes/ (ไม่มีการ Copy Resources ใน /src/test/resources/ ไปด้วย)
$ mvn compiler:testCompile

ใช้สำหรับการ
.jar หรือ .war ตามที่ Config ไว้ใน pom.xmlแล้วนำไปเก็บไปไว้ที่โฟลเดอร์ /target/
$ mvn package

ลอง ls ดู

mvn package จะไม่ทำการ Install Artifact + Jar ลงใน Local Repository (~/.m2)
mvn install จะทำงานเหมือน mvn package แต่จะเพิ่มการทำงาน คือ ทำการ Install Artifact + Jar ลงใน Local Repository (~/.m2) ด้วย
$ mvn install

ใช้สำหรับ Run Test (ทำ Unit Test) Code ในโฟลเดอร์ /src/test/
$ mvn test

ใช้สำหรับตรวจสอบ (Validate) โครงสร้างของ Maven Project ว่าถูกต้องหรือไม่
$ mvn validate

เป็นการชี้ไปยังไฟล์ pom.xml อื่น ๆ ที่ไม่ได้อยู่ใน Current Path เช่น
$ mvn clean -f d:/workspace/www.jittagornp.me/pom.xml

เป็นการบอกให้ maven ไม่ต้องทำ Unit Test ของ Code ใน /src/test/ เช่น
$ mvn -DskipTests=true package

เราสามารถพิมพ์คำสั่ง mvn ให้ใช้งานหลาย goals พร้อมกันได้ดังนี้
ทำ clean + install พร้อมกัน
$ mvn clean install
ทำ clean + package พร้อมกัน
$ mvn clean package
เป็นต้น
ซึ่งจะทำงาน goal 1 แล้วก็ goal 2 ตามลำดับ