Image from https://www.educba.com/maven-commands/
ผมเขียนอธิบายอย่างละเอียดไว้ในบทความนี้แล้ว
- ต้องติดตั้ง Maven เป็นที่เรียบร้อยแล้ว
เมื่อเราติดตั้ง 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
ใช้สำหรับการ
- Compile Source Code
- Copy Resources
- Run Test
- Build (Pack Code) ไปเป็น
.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 ตามลำดับ