2012-07-10 32 views
5

Theo như tôi có thể nói, việc triển khai một bên thứ ba tạo tác nhị phân sử dụng maven được thực hiện như sau:Maven 3: triển khai một artifact sử dụng SCP

mvn deploy:deploy-file -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version> \ 
    -Dpackaging=<type-of-packaging> \ 
    -Dfile=<path-to-file> \ 
    -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \ 
    -Durl=<url-of-the-repository-to-deploy> 

Giả sử rằng kho của tôi có thể truy cập sử dụng scp, vì vậy cho ví dụ trong lệnh trên

-Durl=scpexe://example.org//users/mvnrepo/maven 

Sử dụng maven 3, lệnh triển khai này không thành công với thông báo lỗi.

Cách giải quyết mà tôi đã sử dụng là sao chép hai lọ: wagon-ssh-common-2.2.jarwagon-ssh-external1.0.jar vào thư mục $M2_HOME/lib của tôi.

Do đó câu hỏi của tôi: Tại sao Maven không thể tự mình lấy các toa xe thích hợp?

(và, làm cách nào để thực hiện điều đó nếu có thể?)

Trả lời

4

Như một câu trả lời thẳng và ngắn: thêm một bên thứ ba yêu cầu bạn phải có:

  • hoặc là một Maven Repository (ứng dụng như Nexus hoặc Artifactory với GUI)
  • hoặc pom. xml (trong dòng lệnh)

cân nhắc Hơn nữa

Tôi giả sử bạn muốn sử dụng thư viện của bên thứ ba, không chỉ xuất bản cho riêng bạn.

  1. Nếu bạn muốn sử dụng thư viện của bên thứ ba, bạn thực sự nên tìm kho lưu trữ hiện tại. Tôi khá chắc chắn bạn đã tìm kiếm, nhưng đó là cách tốt hơn để làm điều đó. Nếu bạn tìm thấy một, chỉ cần thêm nó vào bộ nhớ cache repo maven của bạn.

  2. Tiếp theo, nếu bạn không tìm thấy, bạn có thể thêm nó vào repo của riêng bạn, giả sử bạn CÓ. Tôi không thực sự biết nếu bạn đã quen thuộc với điều này, và nó có thể âm thanh rõ ràng, vì vậy xin vui lòng tha thứ cho tôi. nhưng Kho lưu trữ không chỉ là máy chủ tệp. Carlspring kinldy đã nói về Nexus để đưa ra một ví dụ. Ngoài ra còn có Artifactory, và nhiều người khác. Chúng là các máy chủ ứng dụng thực sự. Vì vậy, bạn phải có một của riêng bạn. Chúng có giao diện cho phép bạn thêm các tạo phẩm, cung cấp một số thông tin về nó (ít nhất là nhóm, id, phiên bản).

  3. Cuối cùng, Maven xử lý mô hình phụ thuộc. Đây không phải là một phần chính thức, nhưng chỉ là một phần xem xét:

    • người đã phát triển nó?
    • điều gì phụ thuộc vào (libs khác)?
    • người cung cấp?
    • có đáng tin cậy không?
    • ...

Tất cả những thông tin nên được đặt trong pom.xml, và họ thực sự sẽ được đặt bởi tác giả (xem 1), hoặc ít nhất là được cung cấp khi bạn sử dụng nó trong Maven (xem 2). Trong mọi trường hợp, chúng đến từ pom.xml ... được tạo tự động hay không ... vì vậy bạn sẽ cần một tệp pom.xml :).


Thật vậy, việc xuất bản hoặc sử dụng thư viện dẫn đến cùng một vấn đề: bạn phải cung cấp thông tin về những gì bạn muốn sử dụng theo cách tự động và đáng tin cậy hơn. Đôi khi nó khá xấu xí, nhưng đây là cách tốt hơn để làm điều đó.

Một lần nữa, hãy tha thứ cho tôi nếu điều đó có vẻ hiển nhiên. Nhưng bằng kinh nghiệm, khi bạn không xoay xở để làm điều gì đó với Maven, nó thường khá bởi vì nó không phải là cách tốt để làm điều đó, ngay cả quá trình của bạn cũng rất nhỏ hơn "Quy trình phát triển vĩ đại nhất" sẽ thúc đẩy mọi người :)

+0

Tôi đồng ý với Jean-Rémy, có những kho lưu trữ Maven khác như Archiva và Artifactory. Tôi chỉ đưa ra một ví dụ về một cái như vậy - Nexus. – carlspring

+1

Tôi lặp lại những gì tôi đã viết những đứa trẻ. Ý định của tôi không làm giảm những gì bạn nói. :) Tôi hiểu ý bạn muốn nói :) –

7

Các toa xe là phần mở rộng của Maven. Bạn có thể thêm chúng như sau:

<project> 
    <build> 
     <extensions> 
      <extension> 
       <groupId>org.apache.maven.wagon</groupId> 
       <artifactId>wagon-ssh</artifactId> 
       <version>1.0</version> 
      </extension> 
     </extensions> 
    </build> 
</project> 

Để biết thêm chi tiết, bạn có thể kiểm tra trang Maven Wagon.

+1

Được rồi, nhưng để triển khai nhị phân bên thứ ba nhanh chóng, tôi ước tôi không cần phải tạo tệp POM. Có thể được thêm vào tệp cài đặt chung hoặc tương tự không? – Rom1

+1

Nếu bạn đang sử dụng Nexus, bạn có thể tải tệp lên qua ứng dụng web. – carlspring

Các vấn đề liên quan