2013-06-22 41 views
20

Tôi có một (dường như) vấn đề maven đơn giản tôi không thể giải quyết. Trong POM của tôi, tôi đã chỉ định một phụ thuộc vào openrdf-mè như thế này:Biên dịch Maven: gói không tồn tại

<dependency> 
    <groupId>org.openrdf.sesame</groupId> 
    <artifactId>sesame-runtime</artifactId> 
    <version>2.7.2</version> 
</dependency> 

Chạy dự án từ nhật thực hoạt động tốt, tôi thậm chí có thể xuất một tệp jar chạy được. Thật không may, tôi không thể làm cho nó hoạt động bình thường thông qua cmd-line maven. Để xây dựng một jar, tôi đã thêm dòng sau vào pom của tôi:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>foo.bar.Cli</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Việc lập không thành công với các lỗi sau đây:

.../PLDReducer.java:[25,29] package org.openrdf.rio.rdfxml does not exist 
.../PLDReducer.java:[27,33] package org.openrdf.sail.nativerdf does not exist 
.../LowPLDReducer.java:[25,29] package org.openrdf.rio.rdfxml does not exist 
.../Cli.java:[23,33] package org.openrdf.sail.nativerdf does not exist 
.../SchemaBuilder.java:[30,33] package org.openrdf.sail.nativerdf does not exist 
.../RepoQuerier.java:[23,33] package org.openrdf.sail.nativerdf does not exist 
.../PLDReducer.java:[78,44] cannot find symbol 

Kỳ lạ thay, ngay sau khi tôi thêm plugin biên dịch cho pom và cập nhật các thiết lập dự án, nhật thực cũng không thể biên dịch được nữa. Tôi đã kiểm tra kho lưu trữ của mình và tất cả các tệp mè đều nằm trong đó.

mvn --version cho sản lượng này:

Apache Maven 2.2.1 (rdebian-8) 
Java version: 1.6.0_27 
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "3.8.0-25-generic" arch: "amd64" Family: "unix" 

Tôi thấy rằng có vẻ như để trỏ đến một jre, nhưng googling của tôi chỉ ra rằng tôi sẽ thấy lỗi khác nếu trình biên dịch tự nó đã không được tìm thấy. Tôi có pasted the complete POM here, nếu có bất kỳ trợ giúp nào.

Tôi có thiếu điều gì không? Tôi không thể tìm thấy bất kỳ lỗi nào trong POM của tôi.

+0

Bạn có thể hiển thị toàn bộ đầu ra của 'gói sạch mvn' không? – khmarbaise

+0

[Đây là với -e chuyển] (http://pastebin.com/zg24L8rS) và [Ở đây với -X chuyển đổi] (http://pastebin.com/A5G613LL) – feob

+0

Dường như bạn đang sử dụng tên gói (presumbly trong phần nhập của bạn) không tồn tại. Bạn có thực sự cần gói ngỗng không? Sử dụng các lớp từ nó? Làm sạch phần nhập khẩu với IDE (như Eclipse?)? Bạn có thể hiển thị một trong các tệp mã nguồn như 'PLDReducer.java' không? – khmarbaise

Trả lời

7

Bạn phải thêm phụ thuộc sau đây để xây dựng của bạn:

<dependency> 
    <groupId>org.openrdf.sesame</groupId> 
    <artifactId>sesame-rio-api</artifactId> 
    <version>2.7.2</version> 
</dependency> 

Hơn nữa tôi sẽ đề nghị để có một cái nhìn sâu vào documentation about how to use the lib.

+0

Cảm ơn, điều này thực sự đã làm các trick! Nhưng nếu cần thêm mô-đun này, thì dự án có thể biên dịch và chạy từ trong nhật thực như thế nào? Tôi không có bất kỳ lọ nào trong thư mục lib hoặc tương tự. Ngoài ra, các tài liệu liên kết có vẻ tuyệt vời, tôi đã không đi qua này được nêu ra! – feob

+11

Các gói bị thiếu là các phụ thuộc thời gian chạy, đó là lý do tại sao việc biên dịch từ dòng lệnh thất bại. Tuy nhiên, trình cắm thêm Eclipse Maven có xu hướng bỏ qua các quy tắc phạm vi và chỉ cần kéo mọi phụ thuộc, đó là lý do tại sao việc biên dịch từ Eclipse sẽ làm việc mà không có vấn đề gì. –

+0

Bạn đã xác định loại phạm vi nào? – khmarbaise

0

Không chắc nếu có tập tin tham nhũng hoặc những gì, nhưng sau khi xác nhận cấu hình pom thích hợp Tôi đã có thể giải quyết vấn đề này bằng cách xóa bình từ kho lưu trữ m2 cục bộ của tôi, buộc Maven tải xuống lại nó khi tôi chạy thử nghiệm.

3

Bạn không bao gồm thẻ <scope> trong phụ thuộc của mình. Nếu bạn thêm nó, sự phụ thuộc của bạn trở nên một cái gì đó như:

<dependency> 
    <groupId>org.openrdf.sesame</groupId> 
    <artifactId>sesame-runtime</artifactId> 
    <version>2.7.2</version> 
    <scope> ... </scope> 
</dependency> 

Thẻ "phạm vi" kể maven mà tại đó giai đoạn xây dựng phụ thuộc của bạn là cần thiết. Ví dụ về các giá trị đặt bên trong là "kiểm tra", "được cung cấp" hoặc "thời gian chạy" (bỏ qua các dấu ngoặc kép trong pom của bạn). Tôi không biết sự phụ thuộc của bạn vì vậy tôi không thể cho bạn biết những gì giá trị để lựa chọn. Vui lòng tham khảo tài liệu Maven và tài liệu về sự phụ thuộc của bạn.

+0

chỉ có cùng một vấn đề và tôi đã xóa tất cả cùng nhau và nó đã xây dựng thành công dự án. –

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