Theo số documentation, bản phát hành Maven: thực hiện mục tiêu kiểm tra dự án và sau đó dĩa một cá thể Maven mới để xây dựng nó. Vì lý do nào đó, thể hiện được chia đôi xuất hiện để bỏ qua settings.xml
của người dùng, gây ra lỗi trong trường hợp của tôi vì tệp đó có định nghĩa thuộc tính được sử dụng để soạn URL của kho lưu trữ trong pom mẹ.Quy trình được tách ra khỏi bản phát hành Maven: thực hiện plugin bỏ qua settings.xml của người dùng?
của người sử dụng settings.xml
Định nghĩa của một tài sản trong một "mối quan hệ" hồ sơ mà phải lúc nào cũng hoạt động.<profiles> <profile> <id>nexus</id> <properties> <dist.url>http://host.com/nexus/content/repositories</dist.url> </properties> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
mẹ của pom.xml
Cách sử dụng của tài sản được xác định để soạn URL của kho.<distributionManagement> <repository> <id>nexus</id> <url>${dist.url}/releases</url> </repository> </distributionManagement>
lệnh thực hiện:
mvn release:perform
Output (sau khi nó chỉ ra đã thành công kiểm tra ra, được xây dựng, thử nghiệm và đóng gói dự án):
[INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] BUILD FAILURE [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] Total time: 3.659s [INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012 [INFO] [INFO] Final Memory: 21M/307M [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [WARNING] The requested profile "nexus" could not be activated because it does not exist. [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-project: Failed to deploy artifacts: Could not transfer artifact com.acme.access:my-project:jar:1.0 from/to nexus (${dist.url}/releases): Error transferring file: no protocol: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar -> [Help 1]
Thông báo như thế nào cá thể Maven được chia đôi đang cố gắng tải lên $ {dist.url}, cho biết thuộc tính được định nghĩa trong setti ngs.xml không được đọc. Ngoài ra, thông báo cảnh báo thông báo rằng cấu hình "nexus" không được tìm thấy. Tôi giả sử rằng trường hợp Maven chính đã truyền thông tin hồ sơ xuống cho cá thể được chia nhỏ để nó biết tìm nó, nhưng vì nó bỏ qua (hoặc không tìm thấy) tệp settings.xml của người dùng, nó không thể tìm thấy hồ sơ đó.
Cách duy nhất tôi đã tìm thấy để phá vỡ này là để tự xác định vị trí của tập tin settings.xml
thông qua việc sử dụng các dòng lệnh -s
lập luận của Maven "bọc" bởi arguments
lập luận của plugin, như trong
mvn release:perform -Darguments="-s C:\Users\theuser\.m2\settings.xml"
Plugin có hoạt động theo cách mong đợi/chính xác không? Có cách nào để giữ định nghĩa tài sản bên trong của người dùng settings.xml
mà không cần phải xác định vị trí của tệp như tôi đã làm ở trên không?
Thông tin thêm:
Vấn đề có vẻ là đặc biệt với các plugin không tìm thấy của người dùng
settings.xml
, như sao chép các thông tin hồ sơ vào toàn cầusettings.xml
không gây ra nó để làm việc.Người dùng
settings.xml
của người dùng được đặt tên/tạo đúng cách vì chạyhelp:active-profiles
cho biết hồ sơ đang hoạt động. Xây dựng và triển khai thủ công vớimvn clean deploy
cũng hoạt động chính xác (ví dụ: URL của kho lưu trữ được tính chính xác và tạo phẩm được tải lên).
Tôi nghĩ rằng trong trường hợp của tôi là loại vấn đề tương tự.http: //stackoverflow.com/questions/18636196/maven-issue-the-goal-you-specified-requires-a-project-to-execute-but-there -is –