![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 เร็วขึ้นไปอีก
สนุกจริง ๆ เลย