เมื่อฉันสร้างแอปพลิเคชัน Spring Boot ฉันสามารถเห็นmvnw
และmvnw.cmd
ไฟล์ในรูทของโครงการ จุดประสงค์ของไฟล์ทั้งสองนี้คืออะไร?
เมื่อฉันสร้างแอปพลิเคชัน Spring Boot ฉันสามารถเห็นmvnw
และmvnw.cmd
ไฟล์ในรูทของโครงการ จุดประสงค์ของไฟล์ทั้งสองนี้คืออะไร?
คำตอบ:
ไฟล์เหล่านี้จากMaven เสื้อคลุม มันทำงานคล้าย ๆ กับเสื้อคลุม Gradle
สิ่งนี้อนุญาตให้คุณเรียกใช้โครงการ Maven โดยไม่ต้องมี Maven ติดตั้งและนำเสนอบนเส้นทาง มันดาวน์โหลดรุ่น Maven ที่ถูกต้องหากไม่พบ (เท่าที่ฉันรู้ตามค่าเริ่มต้นในไดเรกทอรีบ้านของผู้ใช้ของคุณ)
mvnw
ไฟล์สำหรับลินุกซ์ (ทุบตี) และmvnw.cmd
สำหรับสภาพแวดล้อมของ Windows
ในการสร้างหรืออัพเดตไฟล์ Maven Wrapper ที่จำเป็นทั้งหมดดำเนินการคำสั่งต่อไปนี้:
mvn -N io.takari:maven:wrapper
หากต้องการใช้ maven เวอร์ชันอื่นคุณสามารถระบุเวอร์ชันดังต่อไปนี้:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
ทั้งสองคำสั่งต้องการ maven on PATH
(เพิ่มพา ธ ไปยัง maven bin
ไปPath
ที่ System Variables) หากคุณมี mvnw ในโครงการของคุณคุณสามารถใช้./mvnw
แทนmvn
คำสั่ง
คำสั่งmvnw
จะใช้ Maven ซึ่งเป็นค่าเริ่มต้นที่ดาวน์โหลดไว้~/.m2/wrapper
ในการใช้ครั้งแรก
ระบุ URL ด้วย Maven ในแต่ละโครงการที่.mvn/wrapper/maven-wrapper.properties
:
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
หากต้องการอัปเดตหรือเปลี่ยนเวอร์ชัน Maven ให้เรียกใช้สิ่งต่อไปนี้ (จดจำเกี่ยวกับ--non-recursive
โครงการหลายโมดูล):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
หรือเพียงแก้ไข.mvn/wrapper/maven-wrapper.properties
ด้วยตนเอง
ในการสร้าง wrapper ตั้งแต่เริ่มต้นโดยใช้ Maven (คุณต้องPATH
เปิดใช้แล้ว:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
The Maven Wrapperเป็นตัวเลือกที่ยอดเยี่ยมสำหรับโครงการที่ต้องการ Maven เวอร์ชันเฉพาะ (หรือสำหรับผู้ใช้ที่ไม่ต้องการติดตั้ง Maven เลย) แทนที่จะติดตั้งหลายเวอร์ชันในระบบปฏิบัติการเราสามารถใช้สคริปต์ตัวห่อเฉพาะโครงการ
mvnw:เป็นเชลล์สคริปต์ Unix ที่รันได้ซึ่งใช้แทน Maven ที่ติดตั้งไว้อย่างสมบูรณ์
mvnw.cmd : สำหรับสภาพแวดล้อม Windows
ใช้เคส
wrapper ควรทำงานกับระบบปฏิบัติการต่าง ๆ เช่น:
หลังจากนั้นเราสามารถเรียกใช้เป้าหมายของเราเช่นนี้สำหรับระบบ Unix:
./mvnw clean install
และคำสั่งต่อไปนี้สำหรับแบทช์:
./mvnw.cmd clean install
หากเราไม่มี Maven ที่ระบุไว้ในคุณสมบัติของ wrapper มันจะถูกดาวน์โหลดและติดตั้งในโฟลเดอร์$USER_HOME/.m2/wrapper/dists
ของระบบ
ปลั๊กอิน Maven Wrapper
ปลั๊กอิน Maven Wrapperเพื่อทำการติดตั้งอัตโนมัติในโครงการ Spring Boot อย่างง่าย
อันดับแรกเราต้องเข้าไปในโฟลเดอร์หลักของโครงการและเรียกใช้คำสั่งนี้:
mvn -N io.takari:maven:wrapper
นอกจากนี้เรายังสามารถระบุรุ่น Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
อ็อพชัน -N หมายถึง –non-recursive เพื่อให้ wrapper นั้นถูกนำไปใช้กับโปรเจ็กต์หลักของไดเร็กตอรี่ปัจจุบันเท่านั้น, ไม่ใช่ใน submodules ใด ๆ
โดยทางเลือกที่ดีที่สุดในปัจจุบันจะใช้ภาชนะ maven เป็นเครื่องมือสร้าง mvn.sh
สคริปต์เช่นนี้จะเพียงพอที่:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
mvn
คำสั่งสำหรับการดำเนินการ maven แต่ฉันสามารถใช้./mvnw
เพื่อวัตถุประสงค์เดียวกัน