Maven ตอน resources

marvel.jpg
เดี๋ยวๆ นี้มัน Marvel เฟ้ย!

ต่อจาก Eclipse หัวข้อถัดมาที่อยากจะ #คายของเก่า คือ Maven นี้นี่เอง

Maven คืออะไร

สำหรับคนที่ไม่รู้ว่า Maven คืออะไรหรือสร้างยังไง… ก็ลองไปกูเกิ้ลเอานะ(ฮา) แต่ถ้าจะให้อธิบายคร่าวๆ Maven ก็คือเครื่องมือช่วย build โปรเจคจาก source code + config ต่างๆให้กลายเป็นไฟล์พร้อมเอาไป execute (jar) หรือ deploy (war)ได้นั้นเอง

Maven กับ resources

ส่วนของเก่าที่อยากคายรอบนี้คือ resources (พวกไฟล์นามสกุล properties, xml หรืออื่นๆที่ไม่ใช่ source code) เช่นถ้าเรามี jdbc.properties ไว้เก็บ username / password ไว้สำหรับต่อ database ปกติเราก็จะสร้างไฟล์ properties แล้วก็ใส่ properties ประมาณนี้

2016-02-03 17_31_55-Java - struts2demo_src_main_resources_jdbc.properties - Eclipse

คือถ้ามันมีไฟล์เดียวคงไม่มีปัญหาอะไร สมมุติถ้าเรามีไฟล์ properties หรือ xml ที่ต้องมา config เยอะๆมานั่งไรแก้ทีละไฟล์คงไม่ดีแน่ Maven จะมาช่วยเราตรงนี้ได้ ด้วยการย้ายมากำหนดที่ Maven ที่เดียวเลย แล้วค่อยเอาค่าที่เรากำหนดใน Maven ไปไล่แปะตามไฟล์พวกนี้ให้

โอเคสมมุติว่าเราสร้างโปรเจคจาก maven-archetype-webapp มาแล้ว แล้วเราต้องการย้ายการกำหนดค่า jdbc.username, jdbc.password มาไว้บน Maven ก็ทำง่ายๆประมาณนี้

แก้ jdbc.properties ไฟล์ซะ

2016-02-03 17_50_49-Java - struts2demo_src_main_resources_jdbc.properties - Eclipse.png
เปลี่ยนค่าเป็นตัวแปรซะโดยใช้ ${xxx} เป็นตัวบอก

เพิ่ม <properties> และสร้าง tag ชื่อเดียวกับที่เรากำหนดไว้ในนั้น

2016-02-03 17_53_13-Java - struts2demo_pom.xml - Eclipse.png
ชื่อ tag ใต้ properties tag ต้องชื่อเดียวกับที่ตั้งไว้

เสร็จแล้วก็เปิด cmd โฟลเดอร์ของโปรเจคจัดเลย mvn clean package

2016-02-03 18_00_57-C__WINDOWS_system32_cmd.exe.png

ถ้ามันมัน “BUILD SUCCESS” ก็ถือว่าโอเค ลองไปเช็คดูในโฟลเดอร์ target/classes จะมี jdbc.properties เด่นเป็นสง่าขึ้นมาแต่..

2016-02-03 18_03_55-jdbc.properties - Notepad2
ค่ายังไม่มา -*-

ค่าไม่มาเพราะเรายังไม่ได้บอก Maven ตอน build ว่าให้ไปกำหนดค่าใน resources ไฟล์ทั้งหลายด้วย ดังนั้นเราก็บอกด้วยการใส่ <resources> ใต้ <build> โดยเราต้องกำหนดโฟลเดอร์ที่เก็บ resources และ flag ที่บอกให้ทำการ filter ลงไปแบบนี้

2016-02-03 18_08_24-Java - struts2demo_pom.xml - Eclipse.png
เอาค่าไป set ให้ทีนะ

mvn clean package อีกที ค่าของ jdbc.username / jdbc.password ก็จะถูกแปะเรียบร้อย เย้ สวัสดี

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s