ลด 50% ทุกแพ็กเกจ เวลาจำกัด เริ่มต้นที่ $2.48/mo
18 นาทีเหลือ
เว็บและแอปธุรกิจ

เชี่ยวชาญ Maven: คำสั่ง ตัวเลือก และ Cheatsheet สำหรับการพัฒนาที่มีประสิทธิภาพ

เอดา เลิฟกูด By เอดา เลิฟกูด การอ่าน 18 นาที อัปเดตเมื่อ 23 ก.พ. 2568
คู่มือคำสั่ง mvn

เครื่องมืออัตโนมัติและเครื่องมือสำหรับนักพัฒนาถือเป็นส่วนสำคัญของโปรเจกต์ และในบทความนี้เราจะพูดถึง Maven ซึ่งเป็นเครื่องมืออัตโนมัติที่ทรงพลังสำหรับโปรเจกต์ Java ช่วยลดความซับซ้อนของกระบวนการ build และสร้างโครงสร้างที่สม่ำเสมอให้กับโปรเจกต์ ทำให้จัดการและทำความเข้าใจโปรเจกต์ได้ง่ายขึ้น บทความนี้ครอบคลุมเนื้อหาของ Maven อย่างครบถ้วน ทั้ง command และ option ต่างๆ ที่ช่วยให้ workflow การพัฒนาของคุณราบรื่นขึ้น เราจะพาสำรวจหัวข้อต่างๆ เช่น Server & Container Management, Source Control Management (SCM) และ GPG สำหรับการ sign artifact นอกจากนี้ยังครอบคลุม command เฉพาะทางสำหรับ Plugin Management, Assembly & Distribution และการสร้าง project site และรายงาน เมื่ออ่านจบ คุณจะมีความเข้าใจที่ครบถ้วนเกี่ยวกับ Maven commands และ options.

ภาพรวมของ Maven และ Project Lifecycle

ในภาษายิดดิช คำว่า Maven แปลว่า "ผู้สะสมความรู้" ความหมายนี้สะท้อนถึงความสามารถของ Maven ในฐานะเครื่องมืออัตโนมัติสำหรับโปรเจกต์ Java Maven ทำให้กระบวนการ build และการจัดการโปรเจกต์ง่ายขึ้นอย่างมาก ด้วยการทำงานหลายอย่างโดยอัตโนมัติและมอบระบบ build ที่เป็นมาตรฐานเดียวกัน

เพื่อให้เข้าใจการทำงานของ Maven ได้ชัดเจนขึ้น มาทำความรู้จักกับแนวคิดของ โมเดลวัตถุโครงการ (POM)POM คือไฟล์ XML ที่เก็บข้อมูลเกี่ยวกับโปรเจกต์และรายละเอียดการตั้งค่าต่าง ๆ Maven ใช้ POM เป็นรากฐานในการทำงานทั้งหมด โดย Maven จะดึงข้อมูล dependencies, build directory, source directory, test source directory และ goals จากไฟล์นี้

หลังจากกำหนดโปรเจกต์และ dependencies จาก pom.xmlแล้ว ทุกครั้งที่รันคำสั่ง Maven มันจะอ่านไฟล์ pom เพื่อดำเนินการในขั้นตอน build ที่ตรงกับคำสั่งนั้น โปรเจกต์มี lifecycle ที่ยาวนานตั้งแต่ช่วงสร้างโปรเจกต์ไปจนถึงการ deploy จริง lifecycle นี้กำหนดลำดับของ phases ที่โปรเจกต์ต้องผ่าน แต่ละ phase แทนขั้นตอนหนึ่งใน lifecycle และรันงานเฉพาะเจาะจง เช่น การคอมไพล์ source code การรันเทสต์ และการแพ็กเกจโค้ดให้อยู่ในรูปแบบที่พร้อมแจกจ่าย ทั้งหมดนี้ทำให้ project lifecycle ของ Maven เป็นแนวคิดที่ควรทำความเข้าใจ มาดู lifecycle phases ของ Maven กันให้ละเอียดขึ้น:

  1. ตรวจสอบ: Phase นี้ตรวจสอบว่าโปรเจกต์ถูกต้องและข้อมูลที่จำเป็นทั้งหมดพร้อมใช้งาน
  2. คอมไพล์: ใน phase นี้ source code ของโปรเจกต์จะถูกคอมไพล์
  3. การทดสอบ: Phase นี้ทดสอบ source code ที่คอมไพล์แล้วด้วย unit testing framework ที่เหมาะสม
  4. บรรจุภัณฑ์: Phase นี้แพ็กเกจโค้ดที่คอมไพล์แล้วให้อยู่ในรูปแบบที่พร้อมแจกจ่าย (เช่น JAR, WAR)
  5. การติดตั้ง: ใน install phase แพ็กเกจจะถูกติดตั้งลงใน local repository และพร้อมให้โปรเจกต์อื่น ๆ บนเครื่องเดียวกันใช้งานได้
  6. ปรับใช้: Phase นี้คัดลอกแพ็กเกจสุดท้ายไปยัง remote repository เพื่อแชร์ให้นักพัฒนาและโปรเจกต์อื่น ๆ ใช้ต่อ

แต่ละ phase มีคำสั่ง mvn ที่ตรงกัน ซึ่งเราจะครอบคลุมในส่วนถัดไปของ maven cheatsheet นี้ คำสั่งเหล่านี้คือคำสั่งหลักที่ใช้จัดการกระบวนการ build ของโปรเจกต์

การจัดการความเป็นไปได้ของอ้างอิง

หนึ่งในฟีเจอร์หลักของ Maven คือการจัดการ dependencies ฟีเจอร์นี้มีความสำคัญมากต่อประสิทธิภาพของ Maven เพราะช่วยให้การจัดการ dependencies ของโปรเจกต์ทำได้ง่ายขึ้น

การจัดการ Dependencies ด้วย Maven

Maven ใช้ repository กลางที่เรียกว่า Maven Central Repository ที่เก็บรักษากลางซึ่งเป็นที่เก็บ libraries และ plugins จำนวนมาก เมื่อโปรเจกต์ต้องการ dependency Maven จะดาวน์โหลด libraries ที่จำเป็นจาก central repository โดยอัตโนมัติและเก็บไว้ใน local repository local repository นี้ทำหน้าที่เป็น cache บนเครื่องของคุณ ช่วยลดเวลาดาวน์โหลดในการ build ครั้งต่อไป

Dependencies ใน Maven ระบุไว้ในไฟล์ pom.xml ใต้ส่วน <dependencies> แต่ละ dependency กำหนดด้วยชุดของ coordinates ดังนี้: groupId, artifactId และ version.

ขอบเขตของการพึ่งพา

เมื่อทำงานกับ Maven คุณสามารถกำหนด scope ของ dependencies ได้ ซึ่งจะกำหนด classpath visibility และ lifecycle phase ของ dependency นั้น ทำให้รู้ว่า phase ไหนต้องการ dependency นี้ scope ที่ใช้บ่อยได้แก่:

  • คอมไพล์: นี่คือ scope เริ่มต้นที่ใช้เมื่อไม่ได้ระบุ scope ใด ๆ Dependencies ที่มี scope นี้จะพร้อมใช้งานใน build phases ทั้งหมดและถูกรวมอยู่ในแพ็กเกจสุดท้ายด้วย
  • จัดเตรียมไว้: dependency ที่มี scope นี้จะต้องพร้อมใช้งานโดย runtime environment เราจะใช้มันระหว่างการ compile แต่จะไม่รวมไว้ใน package สุดท้าย
  • เวลาทำงาน: dependency เหล่านี้ไม่จำเป็นสำหรับการ compile แต่ต้องใช้ระหว่างการรัน และจะถูกรวมไว้ใน runtime classpath
  • การทดสอบ: dependency เหล่านี้ใช้เฉพาะสำหรับการ compile และรัน test เท่านั้น จะไม่ถูกรวมไว้ใน runtime หรือ package สุดท้าย
  • ระบบ: scope แบบ system คล้ายกับ scope แบบ provided แต่คุณต้องระบุ JAR ที่ Maven จะใช้เอง โดย JAR นั้นต้องอยู่ใน system path

ความเป็นไปได้ของการเปลี่ยนแปลง

หนึ่งในความสามารถที่โดดเด่นของ Maven คือการจัดการ transitive dependencies เมื่อโปรเจกต์ประกาศ dependency หนึ่งตัว Maven จะรวม dependency นั้นพร้อมกับ dependency ของมัน และ dependency ของ dependency นั้นต่อไปเรื่อย ๆ โดยอัตโนมัติ ห่วงโซ่นี้เรียกว่า transitive dependencies เพื่อให้เข้าใจได้ง่ายขึ้น ลองนึกภาพว่าโปรเจกต์ของคุณใช้ spring-boot-starter-web Maven ก็จะรวม library ทุกตัวที่ spring-boot-starter-web ต้องการด้วย เช่น Spring Core, Spring MVC และ Jackson

เมื่อเข้าใจทฤษฎีการจัดการ dependency ของ Maven แล้ว มาดูวิธีนำไปใช้จริงกัน

mvn dependency:resolve

คำสั่งนี้จะ resolve และแสดง dependency ทั้งหมดที่โปรเจกต์ต้องการ คุณใช้มันเพื่อดูว่าโปรเจกต์ใช้ library ใดบ้าง และตรวจสอบว่าทุกอย่างถูกต้องครบถ้วน

mvn dependency:tree

คำสั่งนี้แสดง dependency ของโปรเจกต์ในรูปแบบ tree ช่วยให้เห็นความสัมพันธ์ระหว่าง dependency แต่ละตัว และช่วยระบุ conflict ที่อาจเกิดขึ้นได้

mvn dependency:analyze

คำสั่งนี้วิเคราะห์ dependency ของโปรเจกต์เพื่อหา artifact ที่ไม่ได้ใช้งาน ช่วยให้คุณทำความสะอาดโปรเจกต์และตัด dependency ที่ไม่จำเป็นออกได้

ฟีเจอร์การจัดการ dependency ของ Maven ช่วยให้กระบวนการพัฒนาของคุณง่ายขึ้น ช่วยหลีกเลี่ยงปัญหาที่พบบ่อย และรักษาโครงสร้างโปรเจกต์ให้เป็นระเบียบอยู่เสมอ

การดำเนิน

การ execution ใน Maven หมายถึงการรัน task หรือ goal เฉพาะเจาะจงภายในโปรเจกต์ ซึ่งครอบคลุมตั้งแต่การรันโปรแกรม Java ไปจนถึงการเรียกใช้ external script หรือคำสั่งต่าง ๆ Maven มี plugin ที่ช่วยให้การ execute งานเหล่านี้ทำได้ง่าย และยังเป็นอีกหนึ่งฟีเจอร์ที่ทำให้ Maven เป็นเครื่องมือที่ดีสำหรับการ automate workflow ในโปรเจกต์ มาดู Maven execution commands ที่สำคัญกัน

mvn exec:java

คำสั่งนี้ใช้รัน class Java ในโปรเจกต์ของคุณ เหมาะสำหรับการรัน main class หรือทดสอบโปรแกรม Java แบบ standalone โดยไม่ต้อง package ก่อน

mvn exec:exec

คำสั่งนี้ช่วยให้คุณรันโปรแกรมหรือ script ภายนอกจาก Maven environment ได้ ไม่ว่าจะเป็น shell script, external tool หรือโปรแกรมอื่น ๆ ที่เป็นส่วนหนึ่งของ build process

คำสั่ง execution ใน Maven ช่วย automate งานที่ต้องทำซ้ำ ๆ และยังใช้ผสานรวม external tool และ script เข้ากับ Maven build lifecycle ได้ด้วย ทำให้คุณจัดการงานต่าง ๆ ได้มีประสิทธิภาพมากขึ้น

Server และ Container Management

การจัดการ server และ container เป็นขั้นตอนสำคัญในการพัฒนาและ deploy web application Maven รองรับกระบวนการนี้ด้วย plugin ที่ช่วยให้คุณรัน, deploy และจัดการ web application บน server และ container ต่าง ๆ ได้โดยตรงจาก build process มาดู Maven commands สำคัญสำหรับการจัดการ server และ container

mvn tomcat7:run

คำสั่งนี้รัน web application ของคุณโดยใช้ Apache Tomcatเหมาะสำหรับการพัฒนาและทดสอบในเครื่อง ช่วยให้คุณ deploy และทดสอบ web application ได้อย่างรวดเร็วโดยไม่ต้องติดตั้ง server จริง

mvn jetty:run

คำสั่งนี้รัน web application ของคุณโดยใช้ web server ชื่อ Jettyเช่นเดียวกับ Tomcat, Jetty เหมาะกับการพัฒนาและทดสอบเพราะเบาและ deploy ได้รวดเร็ว

การทำงานของ Server & Container Management

Maven ใช้ plugin เช่น tomcat7-maven-plugin และ jetty-maven-plugin เพื่อจัดการ server operations plugin เหล่านี้ช่วยให้คุณ start, stop และตั้งค่า server ได้เป็นส่วนหนึ่งของ build lifecycle ทำให้การพัฒนาและทดสอบ web application ในสภาพแวดล้อมที่สม่ำเสมอทำได้ง่ายขึ้น การใช้ Maven profiles เพื่อกำหนดค่า server สำหรับแต่ละ environment ช่วยให้คุณจัดการ setting ที่แตกต่างกันสำหรับ development, testing และ production ได้ นอกจากนี้ยังสามารถตั้งค่า logging และ monitoring ภายใน server plugin เพื่อติดตามกิจกรรมของ server และแก้ปัญหาได้อย่างรวดเร็ว

SCM (การจัดการควบคุมซอร์สโค้ด)

Source Control Management (SCM) เป็นส่วนสำคัญของทุกโปรเจกต์การพัฒนา ทีมพัฒนาต้องใช้ SCM เพื่อติดตามและจัดการการเปลี่ยนแปลงของ source code Maven มีชุดคำสั่งสำหรับโต้ตอบกับ SCM system เช่น Git, Subversion และอื่น ๆ คำสั่งเหล่านี้ช่วย automate งานต่าง ๆ เช่น การ commit โค้ด, การ checkout โค้ด และการอัปเดตเวอร์ชันโปรเจกต์ มาดู Maven SCM commands และ option ที่สำคัญกัน

mvn scm:checkin

คุณใช้คำสั่ง mvn นี้เพื่อ commit การเปลี่ยนแปลงของโปรเจกต์เข้าสู่ SCM คำสั่งนี้ช่วย automate กระบวนการ commit ไปยัง source control repository เพื่อให้มั่นใจว่าการอัปเดตล่าสุดถูกบันทึกและแชร์กับทีมเรียบร้อยแล้ว

mvn scm:checkout

คำสั่ง maven นี้ใช้ checkout โค้ดของโปรเจกต์จาก SCM repository เหมาะสำหรับการดึง local copy ของโปรเจกต์มาใช้งาน เพื่อให้มั่นใจว่าคุณทำงานกับ source code เวอร์ชันล่าสุดเสมอ

mvn scm:update

คำสั่ง mvn นี้ใช้อัปเดตสำเนาโค้ดในเครื่องของคุณให้ตรงกับเวอร์ชันล่าสุดจาก SCM repository โดยมีหน้าที่ดูแลให้ codebase ในเครื่องสอดคล้องกับ repository และมีการเปลี่ยนแปลงล่าสุดที่สมาชิกในทีมคนอื่นได้ทำไว้

mvn scm:status

คำสั่ง mvn นี้ใช้ตรวจสอบสถานะของสำเนาโค้ดในเครื่องเทียบกับ SCM repository กล่าวคือ จะแสดงให้เห็นว่ามีการเปลี่ยนแปลงใดบ้างที่เกิดขึ้นในเครื่องแต่ยังไม่ได้ commit เข้า repository

mvn scm:tag

คำสั่งนี้ใช้สร้าง tag ใน SCM repository โดย tag จะระบุจุดสำคัญในประวัติของโปรเจกต์ เช่น การปล่อยเวอร์ชันหรือ milestone ที่สำคัญ

คำสั่ง Maven SCM ช่วยให้การจัดการ source code ของโปรเจกต์เป็นเรื่องง่ายขึ้นมาก การเข้าใจและใช้งานคำสั่งเหล่านี้จะช่วยให้คุณทำงานได้มีประสิทธิภาพยิ่งขึ้น และเพิ่มความสะดวกในการทำงานร่วมกันภายในทีม

GPG (GNU Privacy Guard)

GNU Privacy Guard (GPG) คือซอฟต์แวร์เข้ารหัสที่ให้ผู้ใช้งานสามารถเข้ารหัสและลงนามข้อมูลและการสื่อสารได้ ในบริบทของ Maven นั้น GPG ใช้ลงนาม artifact เพื่อยืนยันความถูกต้องและความสมบูรณ์ของข้อมูล สิ่งนี้มีความสำคัญมากเมื่อคุณ deploy artifact ไปยัง public repository เพราะช่วยให้ผู้ใช้งานตรวจสอบได้ว่า artifact เหล่านั้นไม่ได้ถูกแก้ไข Maven มีคำสั่งหลายรูปแบบสำหรับทำงานร่วมกับ GPG และช่วยให้กระบวนการลงนามและ deploy artifact ของโปรเจกต์ทำได้ง่ายขึ้น ดูตัวอย่างบางส่วนได้ดังนี้

mvn gpg:sign

คุณสามารถใช้คำสั่ง Maven นี้เพื่อลงนาม artifact ของโปรเจกต์ด้วย GPG การลงนาม artifact ช่วยให้ผู้อื่นสามารถตรวจสอบได้ และเพิ่มชั้นความปลอดภัยและความน่าเชื่อถือ คำสั่งนี้มักใช้ระหว่างขั้นตอน build เพื่อลงนาม JAR, WAR และ artifact ประเภทอื่นๆ ก่อน deployment

mvn gpg:sign-and-deploy-file

คำสั่ง mvn นี้รวมการลงนามและการ deploy ไฟล์ไว้ในขั้นตอนเดียว ใช้งานได้เมื่อคุณต้องการลงนาม artifact แล้ว deploy ไปยัง repository ทันที ช่วยให้กระบวนการนี้กระชับและรวดเร็วขึ้น

การนำ GPG signing เข้ามาใช้ในกระบวนการ build ของ Maven ช่วยเพิ่มความปลอดภัยและความน่าเชื่อถือของซอฟต์แวร์ ทำให้ผู้ใช้งานสามารถไว้วางใจและตรวจสอบ artifact ของคุณได้ง่ายขึ้น

การจัดการการปล่อยรุ่น

การจัดการ release มีความสำคัญอย่างมากในการพัฒนาซอฟต์แวร์ การจัดการ release ที่ดีช่วยให้มั่นใจได้ว่าเวอร์ชันของซอฟต์แวร์ได้รับการจัดการ แพ็กเกจ และ deploy อย่างถูกต้อง Maven มีชุดคำสั่งสำหรับทำให้กระบวนการ release เป็นแบบอัตโนมัติและจัดการได้ง่ายขึ้น ดูตัวอย่าง Maven options และคำสั่งสำหรับการจัดการ release ได้ดังนี้

mvn release:prepare

คำสั่ง mvn นี้ใช้เตรียมโปรเจกต์สำหรับการ release โดยจะทำงานต่างๆ เช่น ตรวจสอบว่าไม่มีการเปลี่ยนแปลงที่ยังไม่ได้ commit อัปเดตหมายเลขเวอร์ชันในไฟล์ pom.xml กำหนด tag สำหรับ release ใน source control management (SCM) และอัปเดตไฟล์ pom.xml เป็นเวอร์ชัน development ถัดไป คำสั่งนี้ดูแลให้โปรเจกต์อยู่ในสถานะที่มั่นคงและพร้อมสำหรับการ release

mvn release:perform

คำสั่งนี้ดำเนินการ release จริง โดยจะ checkout โปรเจกต์จาก SCM ที่ tag ที่สร้างโดยคำสั่ง release:prepare จากนั้น build โปรเจกต์และ deploy artifact ไปยัง repository ที่กำหนด คำสั่งนี้ดูแลให้ artifact ถูก build จากสถานะของโค้ดที่ตรงกับเวลาที่เตรียม release ไว้พอดี

mvn release:clean

คำสั่ง mvn นี้ใช้ลบไฟล์สำรอง release descriptor ทั้งหมดที่ถูกสร้างขึ้นระหว่างกระบวนการ release:prepare เพื่อล้างสภาพแวดล้อมและดูแลให้ไม่มีไฟล์ค้างจากการ release ครั้งก่อนหลงเหลืออยู่ คำสั่งนี้ช่วยให้ workspace สะอาดและป้องกันปัญหาที่อาจเกิดขึ้นในการ release ครั้งถัดไป

การใช้คำสั่งสำหรับจัดการ release ช่วยให้กระบวนการ release มีระเบียบมากขึ้น ยกระดับคุณภาพของซอฟต์แวร์ และดูแลให้แต่ละ release ได้รับการจัดการอย่างมีประสิทธิภาพ

แบบแผนดั้งเดิม

หากคุณเป็นนักพัฒนาที่ต้องการสร้างโครงสร้างโปรเจกต์จาก template ที่กำหนดไว้ล่วงหน้า ควรพิจารณาใช้ Maven Archetype plugin ในส่วนนี้จะพูดถึงคำสั่ง Maven หลักที่ใช้งานร่วมกับ archetype

mvn archetype:generate

คุณสามารถใช้คำสั่ง mvn นี้เพื่อสร้างโปรเจกต์ใหม่จาก template หรือ "archetype" ที่มีอยู่แล้ว คำสั่งนี้จะแนะนำผู้ใช้งานให้เลือก archetype และกำหนดค่าโปรเจกต์ใหม่ ช่วยให้คุณตั้งค่าโปรเจกต์ที่มีโครงสร้างชัดเจนได้อย่างรวดเร็ว

mvn archetype:catalog

คำสั่งนี้แสดงรายการ archetype ที่มีอยู่ทั้งหมดซึ่งสามารถนำไปสร้างโปรเจกต์ใหม่ได้ มีประโยชน์สำหรับสำรวจ template ต่างๆ ที่ชุมชน Maven จัดเตรียมไว้ และช่วยให้คุณเลือก archetype ที่เหมาะกับโปรเจกต์ของคุณมากที่สุด

ด้วยคำสั่ง Maven สองตัวนี้ คุณสามารถเริ่มต้นโปรเจกต์ใหม่ได้อย่างรวดเร็ว ไม่ว่าจะเป็นแอปพลิเคชัน Java ง่ายๆ หรือโปรเจกต์ขนาดใหญ่ที่ซับซ้อน Maven archetype ก็ช่วยให้คุณมีจุดเริ่มต้นที่ดีได้เสมอ

การจัดการปลั๊กอิน

Maven plugin ช่วยให้นักพัฒนาสามารถขยายขีดความสามารถของ Maven และทำให้งานต่างๆ ใน build lifecycle เป็นแบบอัตโนมัติได้ การจัดการ plugin อย่างเหมาะสมช่วยให้โปรเจกต์ดูแลรักษาได้ง่ายและ build ได้ผลลัพธ์ที่สม่ำเสมอ ส่วนนี้จะครอบคลุมคำสั่งสำคัญสำหรับการจัดการ Maven plugin

mvn plugin:download

คำสั่งนี้ใช้ดาวน์โหลด Maven plugin เฉพาะรายการจาก repository ใช้งานได้เมื่อคุณต้องการให้แน่ใจว่า plugin นั้นมีอยู่ใน local repository ก่อนรันคำสั่ง Maven อื่นที่ต้องพึ่งพา plugin ดังกล่าว

mvn plugin:help

คำสั่ง Maven นี้แสดงข้อมูลและเอกสารโดยละเอียดของ Maven plugin เฉพาะรายการ ใช้งานได้เมื่อคุณต้องการทำความเข้าใจ goal, parameter และการตั้งค่าต่างๆ ที่มีให้ใช้งานใน plugin นั้น

คำสั่งสำหรับจัดการ Maven plugin เหล่านี้ช่วยเพิ่มประสิทธิภาพกระบวนการ build ทำให้ workflow เป็นแบบอัตโนมัติ และรักษามาตรฐานคุณภาพและความสม่ำเสมอของโปรเจกต์

ประกอบและจัดจำหน่าย

ฟีเจอร์ assembly และ distribution ของ Maven ช่วยให้นักพัฒนาสามารถแพ็กเกจโปรเจกต์ในรูปแบบต่างๆ เพื่อแจกจ่ายได้ ไม่ว่าจะเป็นการสร้าง executable JAR, แอปพลิเคชันแบบรวมไฟล์ หรือ distribution แบบกำหนดเองที่รวม dependency และทรัพยากรอื่นๆ ส่วนนี้จะครอบคลุม Maven commands หลักสำหรับ assembly และ distribution

mvn assembly:assembly

คำสั่งนี้สร้าง assembly ให้กับโปรเจกต์ ซึ่ง assembly คือแพ็กเกจที่พร้อมแจกจ่าย สามารถรวม binary, source code, dependency และทรัพยากรอื่นๆ ได้ คำสั่งนี้ใช้ Assembly Plugin ในการสร้างแพ็กเกจตาม assembly descriptor ที่กำหนดไว้

mvn assembly:directory

คำสั่ง mvn นี้สร้างโครงสร้างไดเรกทอรีของ assembly โดยไม่สร้างไฟล์ archive จริง เหมาะสำหรับทดสอบและตรวจสอบเนื้อหาและโครงสร้างของ assembly ก่อนที่จะทำการแพ็กเกจ

การเรียนรู้คำสั่ง assembly และ distribution ของ Maven จะช่วยให้คุณแพ็กเกจและแจกจ่ายแอปพลิเคชันได้อย่างมีประสิทธิภาพมากขึ้น

คำสั่งสำหรับ Site Generation

คำสั่ง site ของ Maven เป็นวิธีที่ดีในการจัดทำเอกสารโปรเจกต์ คำสั่งเหล่านี้สร้างเว็บไซต์เอกสารที่ครบถ้วนสำหรับโปรเจกต์ของคุณ ส่วนนี้จะครอบคลุมคำสั่ง site ที่จำเป็นและหน้าที่ของแต่ละคำสั่ง

mvn site

คำสั่ง mvn site สร้างเอกสารไซต์ของโปรเจกต์ ซึ่งรวมข้อมูลต่างๆ เช่น สรุปโปรเจกต์, รายงาน dependency, การใช้งาน plugin และอื่นๆ

mvn site:deploy

คุณสามารถใช้คำสั่งนี้เพื่อ deploy ไซต์ที่สร้างขึ้นไปยังเซิร์ฟเวอร์ระยะไกล เหมาะสำหรับเผยแพร่เอกสารให้กับผู้ใช้ในวงกว้าง เช่น สมาชิกในทีมหรือสาธารณะ

mvn site:stage

คำสั่งนี้จะ stage ไซต์ไปยังไดเรกทอรีในเครื่อง คุณสามารถใช้คำสั่งนี้เพื่อดูตัวอย่างไซต์ในเครื่องก่อน deploy ไปยังเซิร์ฟเวอร์ระยะไกล

เอกสารที่เป็นระเบียบและชัดเจนมีความสำคัญมากในการพัฒนาโปรเจกต์ คำสั่ง mvn site ช่วยให้ทุกอย่างเป็นระเบียบและช่วยให้ทีมพัฒนาสื่อสารกันได้ดีขึ้น

คำสั่ง WAR & JAR

ในฐานะนักพัฒนา คุณคงรู้ดีว่าการแพ็กเกจแอปพลิเคชันในรูปแบบต่างๆ เป็นสิ่งสำคัญในกระบวนการพัฒนา Maven ช่วยให้คุณแพ็กเกจแอปพลิเคชัน Java ได้หลายรูปแบบ รวมถึง WAR (Web Application Archive) และ JAR (Java Archive) ความสำคัญของรูปแบบแพ็กเกจเหล่านี้จะชัดเจนขึ้นเมื่อคุณต้องการ deploy แอปพลิเคชันไปยังเซิร์ฟเวอร์หรือแจกจ่าย library ส่วนนี้ครอบคลุมคำสั่ง mvn หลักสำหรับการสร้างไฟล์ WAR และ JAR

mvn war:war

คำสั่งนี้คอมไพล์โปรเจกต์และแพ็กเกจเป็นไฟล์ WAR เมื่อรันคำสั่งนี้ Maven จะสร้างไฟล์ WAR ไว้ในไดเรกทอรี target ของโปรเจกต์

mvn jar:jar

คำสั่งนี้คอมไพล์โปรเจกต์และแพ็กเกจเป็นไฟล์ JAR ไว้ในไดเรกทอรี target ของโปรเจกต์

คำสั่งทั้งสองนี้ช่วยในการ deploy และแจกจ่าย คุณสามารถใช้คำสั่งเหล่านี้เพื่อจัดการและแจกจ่ายแอปพลิเคชัน Java ได้อย่างมีประสิทธิภาพ

รายงาน

โปรเจกต์ซอฟต์แวร์ทุกโปรเจกต์ต้องการรายงานที่ละเอียดเพื่อติดตามความคืบหน้า Maven มี plugin และคำสั่ง mvn ที่ทรงพลังสำหรับการสร้างรายงานประเภทต่างๆ ส่วนนี้ครอบคลุม Maven plugin สองตัวที่ใช้สำหรับการรายงาน ได้แก่ Surefire และ JaCoCo

Surefire Plugin

คุณสามารถใช้ plugin นี้สำหรับรัน unit test ในโปรเจกต์ Maven โดยจะสร้างรายงานละเอียดเกี่ยวกับ test ที่รันไป ให้คุณมั่นใจได้ว่า code ทำงานตามที่คาดไว้

mvn surefire-report:report

คำสั่งนี้สร้างรายงาน unit test ในรูปแบบที่อ่านและวิเคราะห์ได้ง่าย Maven จะสร้างรายงาน HTML ไว้ใน target/site ไดเรกทอรีของโปรเจกต์ รายงานนี้รวมข้อมูลจำนวน test ที่รัน, ผ่าน และล้มเหลว พร้อมด้วย stack trace ละเอียดสำหรับกรณีที่ล้มเหลว

JaCoCo Plugin เพิ่มเติม

คุณสามารถใช้ plugin นี้สำหรับวัดและรายงาน code coverage จาก unit test เพื่อให้แน่ใจว่า test ของคุณครอบคลุม codebase อย่างเพียงพอ

mvn jacoco:report

หากต้องการดูว่าส่วนใดของ code ถูกทดสอบแล้วและส่วนใดยังไม่ได้ทดสอบ คำสั่งนี้จะสร้างรายงาน code coverage โดยรายงานที่ได้จะเป็นรายงาน HTML ใน target/site/jacoco ไดเรกทอรีที่แสดง coverage metrics ละเอียดสำหรับ class, method และบรรทัด code

plugin ทั้งสองนี้ช่วยให้คุณติดตามผลการทดสอบและ code coverage พร้อมให้ข้อมูลเชิงลึกที่เป็นประโยชน์เกี่ยวกับคุณภาพของ codebase

สร้างการปรับแต่ง

Maven ช่วยให้คุณปรับแต่ง build ให้ตรงกับความต้องการเฉพาะของโปรเจกต์ได้ ส่วนนี้จะครอบคลุมการใช้งาน Maven profiles และการกำหนด property สำหรับปรับแต่ง build

โปรไฟล์ Maven

Maven profiles ช่วยให้คุณกำหนด configuration ที่แตกต่างกันสำหรับโปรเจกต์ ซึ่งสามารถเปิดใช้งานได้ตามปัจจัยต่างๆ เช่น system property, environment variable หรือเงื่อนไขที่กำหนดเอง ซึ่งหมายความว่าคุณสามารถปรับแต่งกระบวนการ build สำหรับ environment ที่แตกต่างกันได้ เช่น development, testing และ production คุณสามารถกำหนด profile ไว้ใน pom.xml ใต้ส่วน <profiles> ส่วน และ -p ตามด้วย profile ID เพื่อเปิดใช้งาน profile นั้น

คำจำกัดความของคุณสมบัติ

Maven properties ช่วยให้คุณกำหนดค่าที่นำกลับมาใช้ซ้ำได้ทั่วทั้ง pom.xml ไฟล์ของคุณ สามารถระบุ properties เหล่านี้ได้ใน pom.xml, ผ่าน command line หรือในไฟล์ properties ภายนอก คุณสามารถกำหนด properties ได้ใน <properties> ส่วนของคุณ pom.xmlหลังจากกำหนดแล้ว คุณสามารถใช้ properties เหล่านี้ได้ทั่วทั้ง pom.xml ไฟล์

การปรับแต่งกระบวนการ build ใน Maven ช่วยให้คุณปรับโปรเจกต์ให้เข้ากับสภาพแวดล้อมและความต้องการที่แตกต่างกัน การใช้ profiles ช่วยให้สลับระหว่างการตั้งค่า build ที่ต่างกันได้ และการใช้ properties ช่วยให้จัดการค่าต่าง ๆ ได้อย่างมีประสิทธิภาพ

สรุป

บล็อกนี้แนะนำ Maven อย่างครบถ้วน พร้อมพาคุณผ่านทุกขั้นตอนของการพัฒนาแอปพลิเคชัน Java ในฐานะเครื่องมือ automation ที่ทรงพลังสำหรับโปรเจกต์ Java Maven มีคำสั่งและความสามารถที่หลากหลายในแต่ละช่วงของการพัฒนา การเข้าใจและใช้งานคำสั่งเหล่านี้ได้อย่างชำนาญจะช่วยยกระดับกระบวนการพัฒนาของคุณอย่างเห็นได้ชัด

คำถามที่พบบ่อย

Maven ใช้ทำอะไร?

Maven คือเครื่องมือ build automation และการจัดการโปรเจกต์สำหรับโปรเจกต์ Java ช่วยลดความซับซ้อนของกระบวนการ build จัดการ dependencies และกำหนดโครงสร้างโปรเจกต์ให้เป็นมาตรฐาน นอกจากนี้ Maven ยังรองรับการสร้างเอกสาร การรายงาน และการ distribution โปรเจกต์ด้วย

POM ใน Maven คืออะไร?

Maven คือเครื่องมือที่ทำให้กระบวนการ build และการจัดการ dependencies สำหรับโปรเจกต์ Java เป็นอัตโนมัติ POM (Project Object Model) คือไฟล์ XML ใน Maven ที่เก็บข้อมูลและการตั้งค่าที่ Maven ใช้ในการ build โปรเจกต์ ไฟล์ POM กำหนด dependencies, plugins, goals และการตั้งค่า build อื่น ๆ

แชร์

บทความอื่นจากบล็อก

อ่านต่อ

ภาพประกอบบทความรีวิว Odoo แสดงข้อความหัวเรื่องขนาดใหญ่ทางซ้าย โลโก้ Odoo ทางขวา ล้อมรอบด้วยแผงอินเทอร์เฟซแอปลอยอยู่บนพื้นหลังธีมเมฆสีม่วงอ่อน
เว็บและแอปธุรกิจ

รีวิว Odoo ฉบับครบถ้วน: Odoo เหมาะกับธุรกิจของคุณไหม

Odoo เป็นหนึ่งใน ERP platform ที่ธุรกิจกำลังเติบโตพิจารณามากที่สุด เหตุผลหลักคือมันรวมทุกอย่างไว้ในที่เดียว ทั้งการขาย บัญชี และคลังสินค้า

จิม ชวาร์ตซ์จิม ชวาร์ตซ์ อ่าน 11 นาที
ภาพประกอบบทความ open-source alternatives ของ WordPress แสดงพื้นหลัง gradient สีสัน จอมอนิเตอร์ตั้งโต๊ะ code editor ตัวอย่าง dashboard แบบเบลอ และข้อความหัวเรื่องขนาดใหญ่ทางซ้าย
เว็บและแอปธุรกิจ

ทางเลือก WordPress แบบ Open-Source ที่ออกแบบมาสำหรับนักพัฒนาโดยเฉพาะ

WordPress ยังคงมีความสำคัญและรองรับเว็บไซต์ได้หลากหลายประเภท directory ปลั๊กอินมีมากกว่า 62,000 รายการ และ directory ธีมมีธีมฟรีมากกว่า 14,000 แบบ

จิม ชวาร์ตซ์จิม ชวาร์ตซ์ อ่าน 14 นาที
ภาพประกอบบทความเปรียบเทียบ Automad กับ WordPress แสดงโลโก้ของทั้งสอง platform พร้อมหัวเรื่องถามว่านักพัฒนาควรเลือก CMS ตัวไหน
เว็บและแอปธุรกิจ

Automad vs. WordPress: เปรียบเทียบเชิงลึกระหว่าง CMS ชั้นนำสองตัว

Automad และ WordPress แก้ปัญหาเดียวกันด้วยวิธีที่แตกต่างกันโดยสิ้นเชิง Automad เป็น flat-file CMS และ template engine ที่เก็บเนื้อหาในไฟล์แทนฐานข้อมูล ส่วน WordPress ทำงานต่างออกไป

จิม ชวาร์ตซ์จิม ชวาร์ตซ์ อ่าน 9 นาที

พร้อม Deploy แล้วหรือยัง? เริ่มต้นที่ $2.48/เดือน

Cloud อิสระ ให้บริการมาตั้งแต่ปี 2008. AMD EPYC, NVMe, 40 Gbps. คืนเงินภายใน 14 วัน