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

ดังนั้นจึงมีแนวคิดว่า ถ้าทำการ build เฉพาะจุดหรือ module ที่มีการแก้ไข
น่าจะทำให้การ build เร็วขึ้น
มาเริ่มลงมือกันดีกว่า

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

เนื่องจากจัดการ version ของ source code ด้วย git
จึงใช้คำสั่งง่าย ๆ ดังนี้

$git pull origin master
$git diff --name-only  HEAD^!

ผลที่ได้คือ จะแสดงชื่อไฟล์ทั้งหมดที่มีการเปลี่ยนแปลงจากการ pull ครั้งล่าสุด
จะทำการบันทึกผลลงไฟล์

Module01/file1.java
Module02/file2.java
Module02/file3.java
Module03/file4.java
Module04/file5.java
Module04/file6.java

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

สังเกตจากผลของการทำงานจะขึ้นต้นชื่อ module
ดังนั้นจึงทำการเขียน code นิดหน่อยเพื่อตรวจสอบว่า
Module ใดเปลี่ยนแปลงบ้าง
แสดง 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”): ...

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

ซึ่งเขียน 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")

ผลที่ได้คือ ระบบการ build ด้วย Apache Maven ทำงานได้รวดเร็วขึ้นอย่างมาก
ทำให้เราได้รับ feedback จากการ build เร็วขึ้นไปอีก
สนุกจริง ๆ เลย