2012-11-16 38 views
9

Chúng tôi có dự án Maven (được đóng gói dưới dạng JAR) với Tệp Java. Một tệp nguồn mới Java gần đây đã được thêm vào dự án này. Đường dẫn trong đó tệp Java đã được thêm vào, không khớp với khai báo gói của nó. Theo dự kiến, Eclipse hiển thị lỗi trong lớp cho sự không khớp. Tuy nhiên, Maven xây dựng dự án tốt. Trong tệp JAR được tạo ra, tệp .class có trong đường dẫn được chỉ ra bởi khai báo gói. Chúng tôi đã thử di chuyển tệp nguồn Java tới các thư mục không chính xác khác (tức là khác với các khai báo gói), nhưng mỗi khi Maven xây dựng dự án tốt.Khai báo gói Maven + Java

Vì vậy, Maven có bỏ qua thư mục thực sự có tệp .java không? Liệu nó chỉ xem xét việc khai báo gói?

+0

Vui lòng thêm một số chi tiết như pom của bạn (ít nhất bao bì của nó như chiến tranh, jar vv), cấu trúc thư mục, đường dẫn nơi bạn thêm tệp mới, v.v. –

+0

Tôi đã đề cập rằng bao bì là JAR trong câu hỏi của tôi. Đối với các chi tiết khác, xin lỗi, nhưng tôi không thấy làm thế nào nó sẽ giúp cho câu hỏi. Tôi chỉ có thể cung cấp các giá trị mẫu, vì tôi đang làm việc trên một số mã độc quyền. – Vasan

+0

Thực ra tôi chỉ muốn biết chính xác vị trí tập tin của bạn được đặt là maven rất cụ thể. Nhưng dù sao, như bạn đang nói bạn maven xây dựng hoạt động tốt, ok của nó. Một số điều bạn có thể làm là kiểm tra xem bạn đã cấu hình đúng trình cắm maven trong nhật thực chưa. Thay vì chỉ thêm dự án vào nhật thực, "nhập" dự án của bạn như là một "Dự án Maven" trong nhật thực, sau đó nó phải được đồng bộ với xây dựng maven. –

Trả lời

8

Trình biên dịch Maven bên trong lắp ráp một cuộc gọi dòng lệnh chứa các đối số được truyền tới javac, một đối số cho mỗi tệp nguồn (sử dụng the sourcefiles version of the javac call). Nó cũng truyền các thư mục nguồn thực sự cho các siêu khả năng như xử lý chú thích, nhưng khi các tệp nguồn riêng lẻ được chuyển tới javac, chúng được ưu tiên và trình biên dịch không có cách hiệu quả để tìm ra tệp nào thuộc về thư mục nguồn nào và do đó có thể ' t xác nhận cấu trúc gói.

Các Maven Compiler Plugin nội bộ sử dụng Plexus Compiler API, và bạn có thể tìm mã có liên quan trong hai giai cấp này:

+0

Làm cho tinh thần, cảm ơn câu trả lời ngắn gọn và con trỏ! – Vasan

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