บันทึก:
คำตอบนี้ใช้ได้กับ Maven 2 เท่านั้น! ที่กล่าวถึงLATEST
และRELEASE
metaversions ได้รับการลดลงใน Maven 3 "เพื่อประโยชน์ในการทำซ้ำได้สร้าง"มากกว่า 6 ปีที่แล้ว โปรดอ้างอิงถึงวิธีการแก้ปัญหาที่สอดคล้องกับ Maven 3นี้
หากคุณต้องการใช้รุ่นใหม่ล่าสุดเสมอ Maven มีคำหลักสองคำคุณสามารถใช้เป็นทางเลือกแทนช่วงของรุ่นได้ คุณควรใช้ตัวเลือกเหล่านี้ด้วยความระมัดระวังเนื่องจากคุณไม่สามารถควบคุมปลั๊กอิน / การพึ่งพาที่คุณใช้อยู่ได้อีกต่อไป
เมื่อคุณพึ่งพาปลั๊กอินหรือการขึ้นต่อกันคุณสามารถใช้ค่าเวอร์ชันเป็น LATEST หรือ RELEASE LATEST หมายถึงเวอร์ชันล่าสุดที่เผยแพร่หรือสแน็ปช็อตของส่วนเฉพาะเจาะจงสิ่งประดิษฐ์ที่ปรับใช้ล่าสุดในที่เก็บเฉพาะ RELEASE หมายถึงรีลีสที่ไม่ใช่สแน็ปช็อตสุดท้ายในที่เก็บ โดยทั่วไปไม่ใช่วิธีที่ดีที่สุดในการออกแบบซอฟต์แวร์ซึ่งขึ้นอยู่กับรุ่นที่ไม่เฉพาะเจาะจงของสิ่งประดิษฐ์ หากคุณกำลังพัฒนาซอฟต์แวร์คุณอาจต้องการใช้ RELEASE หรือ LATEST เพื่อความสะดวกสบายเพื่อให้คุณไม่ต้องอัปเดตหมายเลขเวอร์ชันเมื่อมีการเปิดตัวไลบรารี่ของบุคคลที่สามรุ่นใหม่ เมื่อคุณปล่อยซอฟต์แวร์คุณควรตรวจสอบให้แน่ใจว่าโครงการของคุณขึ้นอยู่กับรุ่นเฉพาะเพื่อลดโอกาสในการสร้างหรือโครงการของคุณที่ได้รับผลกระทบจากการเปิดตัวซอฟต์แวร์ที่ไม่ได้อยู่ในการควบคุมของคุณ
ดูส่วนPOM ไวยากรณ์ของหนังสือ Mavenสำหรับรายละเอียดเพิ่มเติม หรือดูเอกสารนี้ในช่วงการอ้างอิงเวอร์ชันที่:
- วงเล็บเหลี่ยม (
[
& ]
) หมายถึง "ปิด" (รวม)
- เครื่องหมายวงเล็บ (
(
& )
) หมายถึง "เปิด" (พิเศษ)
นี่คือตัวอย่างที่แสดงตัวเลือกต่าง ๆ ในที่เก็บ Maven, com.foo:my-foo มีข้อมูลเมตาต่อไปนี้:
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
หากต้องการการพึ่งพาสิ่งประดิษฐ์นั้นคุณมีตัวเลือกดังต่อไปนี้ ( สามารถระบุช่วงของรุ่นอื่น ๆได้โดยแสดงเฉพาะรายการที่เกี่ยวข้องที่นี่):
ประกาศรุ่นที่แน่นอน (จะแก้ไขให้เป็น 1.0.1 เสมอ):
<version>[1.0.1]</version>
ประกาศรุ่นที่ชัดเจน (มักจะแก้ไขเป็น 1.0.1 เว้นแต่ว่าเกิดการชนกันเมื่อ Maven จะเลือกรุ่นที่ตรงกัน):
<version>1.0.1</version>
ประกาศช่วงเวอร์ชั่นสำหรับ 1.x ทั้งหมด (ปัจจุบันจะแก้ไขเป็น 1.1.1):
<version>[1.0.0,2.0.0)</version>
ประกาศช่วงเวอร์ชันปลายเปิด (จะแก้ไขเป็น 2.0.0):
<version>[1.0.0,)</version>
ประกาศเวอร์ชันเป็น LATEST (จะแก้ไขเป็น 2.0.0) (ลบออกจาก maven 3.x)
<version>LATEST</version>
ประกาศเวอร์ชันเป็น RELEASE (จะแก้ไขเป็น 1.1.1) (ลบออกจาก maven 3.x):
<version>RELEASE</version>
โปรดทราบว่าโดยค่าเริ่มต้นการใช้งานของคุณจะอัปเดต "ล่าสุด" รายการในเมตาดาต้า Maven แต่เพื่ออัปเดต "ปล่อย" รายการคุณต้องเปิดใช้งาน "ปล่อยรายละเอียด" จากซุปเปอร์ POM คุณสามารถทำได้ด้วย "-Prelease-profile" หรือ "-DperformRelease = true"
เป็นมูลค่าที่เน้นว่าวิธีการใด ๆ ที่อนุญาตให้ Maven เลือกรุ่นอ้างอิง (LATEST, RELEASE และรุ่นช่วง) สามารถปล่อยให้คุณเปิดเพื่อสร้างปัญหาเวลาได้เนื่องจากรุ่นที่ใหม่กว่าอาจมีพฤติกรรมที่แตกต่างกัน (ตัวอย่างเช่นปลั๊กอินพึ่งพาได้เปลี่ยนค่าเริ่มต้นก่อนหน้านี้ ค่าจากจริงถึงเท็จพร้อมผลลัพธ์ที่สับสน)
ดังนั้นจึงเป็นความคิดที่ดีที่จะกำหนดเวอร์ชันที่แน่นอนในรีลีส ดังที่คำตอบของ Timชี้ให้เห็นmaven-versions-pluginเป็นเครื่องมือที่มีประโยชน์สำหรับการอัพเดตเวอร์ชันที่พึ่งพาโดยเฉพาะเวอร์ชันที่ใช้: เวอร์ชันล่าสุดและรุ่นล่าสุด: ใช้เป้าหมายล่าสุด - เผยแพร่