คำนำ
จุดปวด:
ในกระบวนการพัฒนา Java เรามักจะต้องเผชิญกับสภาพแวดล้อมที่หลากหลายเช่นสภาพแวดล้อมการพัฒนาสภาพแวดล้อมการทดสอบและสภาพแวดล้อมที่เป็นทางการและสภาพแวดล้อมเหล่านี้มีข้อกำหนดที่แตกต่างกันสำหรับโครงการ
ก่อนหน้านี้เรามักจะต้องแก้ไขไฟล์การกำหนดค่าที่เกี่ยวข้องด้วยตนเองแล้วพิมพ์ลงในสงครามก่อนที่เราจะสามารถปรับใช้กับสภาพแวดล้อมที่เกี่ยวข้อง
อย่างไรก็ตามสิ่งนี้อาจทำให้เกิดปัญหาได้อย่างง่ายดายเพราะมันง่ายที่จะทำให้เกิดการเปลี่ยนแปลงน้อยลงหรือพลาดทำให้เกิดปัญหาที่ไม่จำเป็น
แฟนตาซี:
มันจะมีความสุขแค่ไหนถ้ามีบางสิ่งที่ทำให้เราสามารถระบุพารามิเตอร์เมื่อเราพิมพ์สงครามและรวบรวมโครงการลงในสงครามในสภาพแวดล้อมที่สอดคล้องกันโดยอัตโนมัติ! - -
ผลลัพธ์: มีสิ่งเหล่านี้จริงๆนั่นคือ maven-profile
ในระหว่างกระบวนการพัฒนาเรามักจะกำหนดค่าพารามิเตอร์ที่แตกต่างกันตามสภาพแวดล้อมที่แตกต่างกันเช่น IP, ชื่อผู้ใช้, รหัสผ่าน, URL, รหัสลับ ฯลฯ ของแหล่งข้อมูลจะแตกต่างกัน วิธีดั้งเดิมคือการแก้ไขค่าพารามิเตอร์ในไฟล์คุณสมบัติหรือความคิดเห็นและความคิดเห็นในไฟล์การกำหนดค่า สิ่งนี้ไม่เพียงมีแนวโน้มที่จะเกิดข้อผิดพลาด แต่ยังเสียเวลาที่ไม่จำเป็น ที่สำคัญกว่าการเผยแพร่รหัสไปยังสภาพแวดล้อมการทดสอบหรือสภาพแวดล้อมการผลิตนั้นง่ายที่จะลืมแก้ไข เพื่อแก้ปัญหานี้ Maven ให้วิธีแก้ปัญหาซึ่งเป็นโปรไฟล์
ภาพต่อไปนี้เป็นวิธีดั้งเดิมและต้องการความคิดเห็นและคำอธิบายไปกลับ
ตำแหน่งที่กำหนดโดยโปรไฟล์
การใช้วิธีการกรอง
ขั้นตอนที่ 1: กำหนดไฟล์สามไฟล์ของ Application-dev.properties, การทดสอบแอปพลิเคชัน. properties และ application-pro.properties ตามลำดับ
Application-dev.properties
env.jdbc.username = devenv.jdbc.password = 123456
การทดสอบแอปพลิเคชัน
env.jdbc.username = testenv.jdbc.password = 888888
Application-Pro.Properties
env.jdbc.username = rootenv.jdbc.password = 666666
ขั้นตอนที่ 2: กำหนดแอปพลิเคชันไฟล์คุณสมบัติทั้งหมด properties และค่าในไฟล์นี้หมายถึงคีย์ในแอปพลิเคชัน-<v> .properties
Application.properties
// อ้างอิง keyjdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}# salt การกำหนดค่าสาธารณะ = 123456789 ขั้นตอนที่ 3: กำหนดค่าโปรไฟล์
<<files> <profile> <!-สภาพแวดล้อมการพัฒนา-> <id> dev </id> <properties> <Env> dev </env> </properties> <ivation> <!-ตั้งค่าการเปิดใช้งานเริ่มต้นของการกำหนดค่านี้-> <activeByDefault> true </activeDefault> </properties> </premerties> </profile> <profile> <!-สภาพแวดล้อมที่วางจำหน่าย-> <id> pro </id> <properties> <v> pro </env> </properties> </profile> </profile> </profile> </profile> <profile> <! </files>
ขั้นตอนที่ 4: กำหนดค่าตัวกรองและทรัพยากร
$ {env} เป็นชื่อของ mvn package -P <env> ซึ่งบอกคีย์ที่ใช้ใน Application.properties เป็นคีย์ของไฟล์คุณสมบัติ
<uild> <pinalName> โปรไฟล์-แอป </finalname> <!-กำหนดที่อยู่ของไฟล์การกำหนดค่าตัวแปร-> <filters> <filter> src/main/resources/config/application/application-$ {env} .properties </filter> <plugins> <roupid> org.apache.maven.plugins </groupid> <ratifactid> maven-war-plugin </artifactid> </plugin> แพ็คเกจและเรียกใช้
// หากไม่ได้ระบุสภาพแวดล้อมค่าเริ่มต้นคือสภาพแวดล้อมที่มี activeByDefault = TRUE ปัจจุบันมันอ้างถึงสภาพแวดล้อมการพัฒนาแพ็คเกจ MVN // สภาพแวดล้อมที่ระบุในแพ็คเกจผ่านพารามิเตอร์ -P โปรดทราบว่า P เป็นตัวพิมพ์ใหญ่ MVN Package -P <Env>
จากผลของการเรียกใช้การทดสอบ MVN Packege -P คุณจะเห็นได้ว่า jdbc.username และ jdbc.password ในคลาส/แอปพลิเคชัน. perperties ในไดเรกทอรีเป้าหมายที่สร้างขึ้นคือค่าของ env.jdbc.username และ env.jdbc.password ที่กำหนดค่าในแอปพลิเคชันทดสอบ
หากคุณต้องการใช้ไฟล์การกำหนดค่าแอตทริบิวต์ในฤดูใบไม้ผลิเพียงแนะนำไฟล์การกำหนดค่าทั้งหมดนี้โดยตรงและภารกิจของไฟล์การกำหนดค่าสภาพแวดล้อมอื่น ๆ ได้สิ้นสุดลงแล้ว
<context:property-placeholder location="classpath:application.properties"/>
หลักการดำเนินการ:
กำหนดโปรไฟล์ที่แตกต่างกันสำหรับแต่ละสภาพแวดล้อมที่แตกต่างกันใน pom.xml แต่ละโปรไฟล์มีชื่อสภาพแวดล้อม จากนั้นกำหนดไฟล์การกำหนดค่าที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน (เช่น application-<env>.properties ) จากนั้นกำหนดไฟล์คุณสมบัติทั้งหมด (เช่น application.properties) จากนั้นให้ค่าของแอปพลิเคชันอ้างอิงคีย์ที่เกี่ยวข้องใน application-<env>.properties และระบุชื่อของสภาพแวดล้อมที่จะบรรจุเมื่อบรรจุภัณฑ์ ด้วยวิธีนี้ค่าของคีย์ในแอปพลิเคชัน properties คือค่าที่สอดคล้องกันของแอปพลิเคชันสภาพแวดล้อม-<v> .properties
วิธีการใช้งานหลายทรัพยากร
ขั้นตอน
ขั้นตอนที่ 1: สร้างไดเร็กทอรี Env ใน SRC/Main/Resource จากนั้นสร้างไดเรกทอรีย่อยของแต่ละสภาพแวดล้อมจากนั้นสร้างไฟล์ชื่อ config.properties ภายใต้ไดเรกทอรีย่อยแต่ละสภาพแวดล้อม แต่ละคีย์เหมือนกันและค่าแตกต่างกัน
env/dev/config.properties
jdbc.username = devjdbc.password = 123456
env/test/config.properties
jdbc.username = testjdbc.password = 888888
env/pro/config.properties
jdbc.username = rootjdbc.password = 6666666
ขั้นตอนที่ 2: สร้างแอปพลิเคชันที่ไม่ขึ้นกับสิ่งแวดล้อม
Application.properties
# เกลือการกำหนดค่าสาธารณะ = 123456789
ขั้นตอนที่ 3: กำหนดค่าโปรไฟล์
<<files> <profile> <!-สภาพแวดล้อมการพัฒนา-> <id> dev </id> <properties> <Env> dev </env> </properties> <ivation> <!-ตั้งค่าการเปิดใช้งานเริ่มต้นของการกำหนดค่านี้-> <activeByDefault> true </activeDefault> </properties> </premerties> </profile> <profile> <!-สภาพแวดล้อมที่วางจำหน่าย-> <id> pro </id> <properties> <v> pro </env> </properties>
ขั้นตอนที่ 4: กำหนดค่าทรัพยากร
<uild> <pinalName> โปรไฟล์-แอป </finalname> <!-กำหนดที่อยู่ของไฟล์การกำหนดค่าตัวแปร-> <sroves> <sroves> <Srores> <Sresory> SRC/Main/Resources </Directory> <silter> true </filtering> </sursece> <sroves> <sresour> <src/main/resources/env/$ {env} </directory> <รวมถึง <รวมถึง>*.*</-dalcive> <รวม> **/*. xml </indual> <RoupID> org.apache.maven.plugins </groupid> <ratifactid> maven-war-plugin </artifactid> </plugin> </plugin> ขั้นตอนที่ 5: เรียกใช้ mvn package -P test
หากคุณมักจะใช้ mvn package -P <env> คุณสามารถกำหนดค่า maven บางส่วนในความคิด ขั้นตอนคือ: แก้ไขการกำหนดค่า ...- +- maven- เพิ่มคำสั่ง maven สำหรับแต่ละสภาพแวดล้อม ในอนาคตดับเบิลคลิกการกำหนดค่าการเรียกใช้ใด ๆ ซึ่งเทียบเท่ากับการเรียกใช้คำสั่ง mvn package -P <env>
การเปรียบเทียบสองวิธี
วิธีการกรองจะแพ็คแอปพลิเคชัน-พร็อพเพอร์ตี้ทั้งหมด, การทดสอบแอปพลิเคชัน. properties และไฟล์แอปพลิเคชัน -pro.properties และวิธีนี้สามารถใช้สำหรับไฟล์คุณสมบัติเท่านั้น หากมีไฟล์อื่น ๆ (เช่น. xml) และมีการกำหนดค่าที่แตกต่างกันตามสภาพแวดล้อมที่แตกต่างกันวิธีนี้ยากที่จะจัดการกับ
เมื่อบรรจุภัณฑ์วิธีการหลายแหล่งทรัพยากรจะบรรจุไฟล์การกำหนดค่าของสภาพแวดล้อมที่ระบุเท่านั้น คุณสามารถวางไฟล์ต่าง ๆ ลงในโฟลเดอร์สภาพแวดล้อมที่เกี่ยวข้องและโฟลเดอร์ทั้งหมดจะถูกบรรจุเมื่อบรรจุภัณฑ์ แนะนำวิธีนี้
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com