Khi tôi tạo một ứng dụng Spring Boot, tôi có thể thấy mvnw
và mvnw.cmd
các tập tin trong thư mục gốc của dự án. Mục đích của hai tập tin này là gì?
Khi tôi tạo một ứng dụng Spring Boot, tôi có thể thấy mvnw
và mvnw.cmd
các tập tin trong thư mục gốc của dự án. Mục đích của hai tập tin này là gì?
Câu trả lời:
Những tập tin này là từ Maven Wrapper . Nó hoạt động tương tự như trình bao bọc Gradle .
Điều này cho phép bạn chạy dự án Maven mà không cần cài đặt và trình bày Maven trên đường dẫn. Nó tải xuống phiên bản Maven chính xác nếu không tìm thấy (theo như tôi biết theo mặc định trong thư mục nhà người dùng của bạn).
Các mvnw
tập tin là dành cho Linux (bash) và mvnw.cmd
là cho môi trường Windows.
Để tạo hoặc cập nhật tất cả các tệp Maven Wrapper cần thiết thực hiện lệnh sau:
mvn -N io.takari:maven:wrapper
Để sử dụng phiên bản maven khác, bạn có thể chỉ định phiên bản như sau:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Cả hai lệnh yêu cầu maven trên PATH
(thêm đường dẫn đến maven bin
để Path
vào System Variables) nếu bạn đã có mvnw trong dự án của bạn, bạn có thể sử dụng ./mvnw
thay vì mvn
trong các lệnh.
Lệnh mvnw
sử dụng Maven theo mặc định được tải xuống ~/.m2/wrapper
trong lần sử dụng đầu tiên.
URL với Maven được chỉ định trong mỗi dự án tại .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
Để cập nhật hoặc thay đổi phiên bản Maven, hãy gọi các mục sau (nhớ về --non-recursive
các dự án đa mô-đun):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
hoặc chỉ sửa đổi .mvn/wrapper/maven-wrapper.properties
bằng tay.
Để tạo trình bao bọc từ đầu bằng Maven (bạn cần phải PATH
chạy nó:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Các Maven Wrapper là một sự lựa chọn tuyệt vời cho các dự án mà cần một phiên bản cụ thể của Maven (hoặc cho người dùng không muốn cài đặt Maven ở tất cả). Thay vì cài đặt nhiều phiên bản của nó trong hệ điều hành, chúng ta chỉ có thể sử dụng tập lệnh trình bao bọc dành riêng cho dự án.
mvnw: đó là tập lệnh shell Unix thực thi được sử dụng thay cho Maven được cài đặt đầy đủ
mvnw.cmd : nó dành cho môi trường Windows
Trường hợp sử dụng
Trình bao bọc nên hoạt động với các hệ điều hành khác nhau, chẳng hạn như:
Sau đó, chúng ta có thể chạy các mục tiêu của mình như thế này cho hệ thống Unix:
./mvnw clean install
Và lệnh sau cho Batch:
./mvnw.cmd clean install
Nếu chúng ta không có Maven được chỉ định trong thuộc tính trình bao bọc, nó sẽ được tải xuống và cài đặt trong thư mục $USER_HOME/.m2/wrapper/dists
của hệ thống.
Plugin Maven Wrapper
Plugin Maven Wrapper để cài đặt tự động trong dự án Spring Boot đơn giản.
Đầu tiên, chúng ta cần vào thư mục chính của dự án và chạy lệnh này:
mvn -N io.takari:maven:wrapper
Chúng tôi cũng có thể chỉ định phiên bản của Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
Tùy chọn -N có nghĩa là đệ quy-đệ quy để trình bao bọc sẽ chỉ được áp dụng cho dự án chính của thư mục hiện tại, không phải trong bất kỳ mô hình con nào.
Cho đến nay, tùy chọn tốt nhất hiện nay sẽ là sử dụng thùng chứa maven làm công cụ xây dựng. Một mvn.sh
kịch bản như thế này là đủ:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
mvn
lệnh cho hoạt động maven mặc dù tôi có thể sử dụng./mvnw
cho cùng một mục đích.