2010-05-18 24 views
5

Tôi mới bắt đầu với con quạ, đến từ nhiều năm làm việc với Ant. Tôi đang cố gắng một nhiệm vụ cơ bản bây giờ, xây dựng một dự án đơn giản mà đòi hỏi một số thư viện từ một nhà cung cấp. Tôi có các lọ trong src \ main \ resources \ VENDORNAME. Khi tôi chạy mvn biên dịch nó không thành công trên biên dịch nói rằng các thư viện không tồn tại. Tôi dường như không thể thêm chúng dưới dạng phụ thuộc vì tôi không biết số phiên bản của chúng và vì chúng là độc quyền, tôi không thể tìm thấy chúng trong ibiblio hoặc ở nơi khác. Không có những chiếc lọ này tôi không thể biên dịch các lớp của mình.
Có cách nào để sử dụng lọ không tuân theo quy ước của Maven không? Tôi có thể không hiểu maven chính xác, vì vậy mọi hướng dẫn đều được chào đón. Nhiều đánh giá cao cho bất kỳ phản ứng.Làm cách nào để thêm các lọ cần thiết để biên dịch một dự án maven nếu chúng chưa bao giờ được xây dựng bằng một pom?

+0

Tôi muốn đề xuất giải pháp này: http://stackoverflow.com/questions/2229757/maven-add-a-dependency-to-a-jar-by-relative-path –

+0

Tôi đã cố gắng để có được một chút hơn nữa, bằng cách thực hiện bước cài đặt mvn: install. Tuy nhiên, bây giờ có vẻ như để tìm các lọ của tôi dưới dạng tệp * .pom và không thể tìm thấy chúng, và do đó không thể biên dịch các lớp. Có một mặc định mà làm cho nó tìm kiếm. Pom thay vì .jar? Ví dụ: Đang tải xuống: tệp: // C: /Tools/maventest/repo/com/fafs/AdvCommon/1.0/AdvCommon-1.0.pom [INFO] Không thể tìm thấy tài nguyên 'com.fafs: AdvCommon: pom: 1.0 'trong kho lưu trữ cục bộ-repo (file: // C:/Tools/maventest/repo) – JasonH

Trả lời

4

Tôi sẽ viết tệp POM của riêng bạn cho các lọ này và thêm chúng vào kho lưu trữ của bạn. Không phải là bất cứ điều gì lạ mắt, chỉ là một tập tin POM xương trần. Bằng cách đó bạn có thể bao gồm chúng mà không vi phạm "The Maven Way".

Nếu bạn muốn Maven để tự động tạo một cái cho thầy, và cài đặt nó để repo địa phương của bạn, bạn có thể sử dụng lệnh này:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 
+0

Cảm ơn lời khuyên, tôi có thể sử dụng số phiên bản nào? Tôi không có quyền truy cập vào mã nguồn vì vậy tôi không thể tự xây dựng các lọ. – JasonH

+0

Trong trường hợp một số phiên bản hoặc không tồn tại hoặc tôi không có cách nào để tìm ra nó, tôi chỉ cần dán nhãn nó 1.0. – dbyrne

+0

Cảm ơn sự giúp đỡ, tôi đánh giá cao nó. – JasonH

0

Đưa các phụ thuộc không mavenized bên ngoài vào một kho lưu trữ thực sự là tốt nhất Tuy nhiên, nếu điều này là không khả thi, bạn cũng có thể tham khảo một phụ thuộc được lưu trữ trên đĩa (có thể đã được kiểm tra từ hệ thống kiểm soát phiên bản của bạn như trong những cũ, xấu xí trước maven tuổi). Dưới đây là một ví dụ về một POM tham khảo một JAR lưu trữ trong của dự án lib/thư mục:

<project ...> 
... 
     <dependency> 
      <groupId>com.ascentialsoftware</groupId> 
      <artifactId>tr4j</artifactId> 
      <version>8.1</version> 
      <scope>system</scope> 
      <systemPath>${basedir}/lib/tr4j.jar</systemPath> 
     </dependency> 
... 
</project> 

ehm, tôi đã chỉ bây giờ nhận thấy rằng giải pháp này nằm ở cùng câu trả lời cho "Maven: thêm một sự phụ thuộc vào một jar theo đường dẫn tương đối ", được liên kết với bài đăng này - bạn nên kiểm tra nó để có một cuộc thảo luận chuyên sâu hơn. Tuy nhiên tôi để nó ở đây vì nó dễ nhìn hơn liên kết.

+0

Cảm ơn Jakub, tôi vẫn phải làm mvn cài đặt mặc dù cho mỗi bình mặc dù tôi không? Tôi nghĩ rằng tôi hiểu được khái niệm, nhưng làm điều này cho 200 lọ là khá đau, tôi muốn thấy một cái gì đó giống như kho lưu trữ phẳng của Ivy mà không yêu cầu bước cài đặt ... – JasonH

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