Maven (Build Tool) สร้าง Web Server ง่าย ๆ ด้วย tomcat7-maven-plugin

สืบเนื่องจากเมื่อ 2 ปีที่แล้วเขียน content เกี่ยวกับเรื่อง “Maven คืออะไร และการติดตั้งเพื่อใช้งานเบื้องต้น” ที่ poolsawat.com ไว้นิดหน่อย ผ่านมา 2 ปีกว่ามีความรู้เพิ่มขึ้น เลยอยากจะใช้บทความนี้อธิบายสิ่งที่ตัวเองเข้าใจซะเลย

สร้าง Run Web Server ด้วย Tomcat embed server ง่าย ๆ

อธิบายเบื้องต้น
1. <profiles><profile><id>DEV</id>... สร้าง profile เพื่อใช run mvn ถ้ามี resource หรือ file config อะไรที่แตกต่างกันระหว่า env dev กับ prod ก็ควรที่จะแยก profile เพื่อเรียกการ resource ที่ต่างกัน แต่ตัวอย่างมี profile DEV เพียงอย่างเดียวและมีการเรียก plugin “ maven-compiler-plugin” เพียงตัวเดียวเท่านั้น
2. … <build><finalName>Medium</finalName>… define เอาไว้อย่างอิงในการเรียกใช้งานตามที่ต่าง ๆ
3. … <plugins><plugin>…</plugin>… เป็นการกำหนด plugin ต่าง ๆ ตัวอย่างเราก็จะเรียก “maven-compiler-plugin” และ “tomcat7-maven-plugin*”
4. *tomcat7-maven-plugin ถือเป็นพระเอกของเนื้อหาวันนี้
4.1 groupId อ้างอิงถึง group id ของ plugin
4.2 artifactId อ้างอิงถึงชื่อของ plugin นี้
4.3 version ตรงตามนี้คือเลข เวอร์ชั่น ของ plugin
4.4 configuration ถือว่าเป็นส่วนกำหนด option เพิ่มให้กับ plugin กำหนดที่นี่
4.4.1 port กำหนด port ของ web server
4.4.2 path กำหนดเป็น path ของเว็บในที่นี้ให้จะ access เข้าจาก “http://localhost:5555/” เลยกำหนด <path>/</path>
4.4.3 contextReloadable กำหนดให้ restart web server ตลอดทุกครั้งที่มีการแก้ไขไฟล์ *.java จะ recompile file ทุกครั้ง ให้กำหนดเป็น <contextReloadable>true</contextReloadable>
4.4.4 systemProperties กำหนด resource args ให้กับ java compile ใช้สำหรับ run web server <JAVA_OPTS>-Xms512m -Xmx1024m -XX:MaxPermSize=1024m</JAVA_OPTS>

ทดสอบ

: mvn tomcat7:run -PDEV
หรือ

Image for post
Image for post

ครั้งแรกหลังจากสั่ง run maven จะทำการ download file dependencies ต่าง ๆ เข้ามาที่ localRepository ของ เรา แต่ครั้งต่อไปก็จะไม่ช้าแล้ว

Image for post
Image for post

ขอบคุณครับที่ติดตามมาถึงท้ายบทความนี้ ^.^

Written by

Senior Developer @Telecom, Full Stack Developer [Subscribe Me @poolsawat.com]

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store