Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 2077

แก้ไขปัญหา Apache Maven ทำงานช้าด้วยการ build เฉพาะส่วนที่เปลี่ยนแปลง

$
0
0

maven-00

maven-00 เนื่องจากงานที่ดูอยู่เป็นระบบที่พัฒนาด้วยภาษา Java ส่วนโครงสร้างและ build tool ที่ใช้งานเป็นหลักคือ Apache Maven โดยในระบบประกอบไปด้วย module ต่าง ๆ มากมาย ส่งผลให้เมื่อมีการเปลี่ยนแปลงหนึ่งครั้ง จะต้องใช้เวลาในการ build ใหม่นานมาก ๆ (Clean build)
ดังนั้นจึงมีแนวคิดว่า ถ้าทำการ build เฉพาะจุดหรือ module ที่มีการแก้ไข น่าจะทำให้การ build เร็วขึ้น มาเริ่มลงมือกันดีกว่า

เริ่มจากต้องรู้ก่อนว่ามีไฟล์ไหนเปลี่ยนแปลงบ้าง ?

เนื่องจากจัดการ version ของ source code ด้วย git จึงใช้คำสั่งง่าย ๆ ดังนี้ [code] $git pull origin master $git diff --name-only HEAD^! [/code] ผลที่ได้คือ จะแสดงชื่อไฟล์ทั้งหมดที่มีการเปลี่ยนแปลงจากการ pull ครั้งล่าสุด จะทำการบันทึกผลลงไฟล์ [code] Module01/file1.java Module02/file2.java Module02/file3.java Module03/file4.java Module04/file5.java Module04/file6.java [/code]

จากนั้นทำการตรวจสอบว่ามี module ไหนทำการเปลี่ยนแปลงบ้าง ?

สังเกตจากผลของการทำงานจะขึ้นต้นชื่อ module ดังนั้นจึงทำการเขียน code นิดหน่อยเพื่อตรวจสอบว่า Module ใดเปลี่ยนแปลงบ้าง แสดง code ตัวอย่างดังนี้ [code] gitStatus = open('git-update') for statusLine in iter(gitStatus): if statusLine.startswith(“Module01”): ... elif statusLine.startswith(“Module02”): ... elif statusLine.startswith(“Module03”): ... elif statusLine.startswith(“Module04”): ... [/code]

จากนั้นทำการ build ในแต่ละ module ไปเลย

ซึ่งเขียน code ได้ดังนี้ [code] os.system("cd Module01 && mvn clean install") os.system("cd Module02 && mvn clean install") os.system("cd Module03 && mvn clean install") os.system("cd Module04 && mvn clean install") [/code] ผลที่ได้คือ ระบบการ build ด้วย Apache Maven ทำงานได้รวดเร็วขึ้นอย่างมาก ทำให้เราได้รับ feedback จากการ build เร็วขึ้นไปอีก สนุกจริง ๆ เลย

Viewing all articles
Browse latest Browse all 2077

Trending Articles