2015-12-01 25 views
6

Tôi đang sử dụng Maven 3.3.3 cùng với Eclipse Mars và m2e. Hôm qua, tôi đã tạo một dự án Java mới và chuyển đổi nó thành một dự án Maven.Maven đột nhiên muốn src/thay vì src/main/java

Sau đó, đường dẫn lớp chỉ chứa src thay vì tiêu chuẩn src/main/java. Tôi đã rất ngạc nhiên nhưng tôi chỉ đơn giản là tạo ra các thư mục còn thiếu và chạy "Dự án cập nhật" của m2e. Điều này không giải quyết được vấn đề; m2e vẫn khăng khăng chỉ sử dụng src.

Vì vậy, tôi thay đổi nội dung classpath bằng tay để kết thúc với với bình thường

src/test/java 
src/test/resources 
src/main/java 
src/main/resources 

Khi tôi cố gắng "Cập nhật dự án" M2E của bây giờ, tôi nhận được lỗi này:

Cannot nest 'foo/src/test/java' inside 'foo/src'. To enable the nesting, exclude 'test/' from 'foo/src' 

phào nhẹ tôi đã đi đến dòng lệnh tiếp theo và chạy mvn eclipse:eclipse để nhận đường dẫn lớp này:

src/test/java 
src/test/resources 
src 
src/main/resources 

Bây giờ, tôi hoàn toàn bối rối. Tại sao điều đó lại xảy ra?

Trả lời

20

Mở POM của bạn trong trình chỉnh sửa POM và nhấp vào tab "Hiệu quả POM". Tìm kiếm sourceDirectory. Có thể bạn sẽ thấy một cái gì đó như thế này:

<sourceDirectory>src</sourceDirectory> 

Khi bạn lần đầu tiên chuyển đổi dự án Java thành Maven, m2e cố gắng giữ cho classpath giống nhau. Các dự án Java của Eclipse có một cách bố trí khác nhau theo mặc định. Họ sử dụng src/ thay vì src/main/java/. Không có thư mục kiểm tra nào kể từ khi các dự án Eclipse thường đưa các thử nghiệm của họ vào một dự án khác.

Để khắc phục vấn đề này:

  1. Xóa các yếu tố sourceDirectory từ POM (Lưu ý: Nó có thể là trong một POM mẹ).
  2. Tới dự án
  3. Chọn tất cả các thư mục nguồn
  4. Di chuyển chúng từ việc xây dựng đường dẫn (menu ngữ cảnh -> Build Path -> Xóa khỏi Build Path).
  5. Cập nhật dự án

Lỗi bây giờ sẽ biến mất và đường dẫn phải chính xác.

+0

này làm việc cho tôi, mặc dù tôi có thể bỏ qua bước 1. – turboemu

+0

này làm việc rực rỡ, nhưng tại sao? –

+0

@turboemu Nếu bạn làm điều đó, thì vấn đề sẽ trở lại, cuối cùng. –

1

Có hai loại của các thư mục mà bạn có thể tạo ra: 1) Gói 2) Nguồn Thư mục

1) Một gói trông như thế này enter image description here

Để tạo một gói, nhấp chuột phải vào thư mục mà bạn muốn (trong ví dụ của tôi, tôi phải nhấp vào Tài Java) -> New -> gói

enter image description here

Một cửa sổ bật lên trông như thế này sẽ xuất hiện

enter image description here

"Thư mục nguồn:" Đó là nơi bạn chọn dự án của mình. Nếu bạn không thấy gì ở đó, hãy nhấp vào “Duyệt…” và tìm dự án của bạn. Nếu tôi nhấp vào “Duyệt qua…” nó hiển thị thông tin này:

“Tên:” là tên bạn sẽ cung cấp cho gói của mình.

enter image description here

Lưu ý: Gói nên trong Source Folders. Thư mục nguồn là thư mục mẹ.

2) Nguồn Folders trông như thế này: enter image description here

Để tạo một thư mục Source, bấm chuột phải vào thư mục mà bạn muốn (trong ví dụ của tôi, tôi phải nhấp vào Tài Java) -> New - > Nguồn Thư mục

enter image description here

Bên dưới “tên dự án:” viết tên của dự án của bạn. Nếu bạn cần trợ giúp, hãy nhấp vào “Duyệt qua…”

Trong “Tên thư mục:” viết tên thư mục bạn muốn.

Lỗi: Nếu bạn đang cố gắng tạo thư mục “src/main/resources” và bạn đang gặp phải lỗi này “Không thể lồng‘ ProjectName ’bên trong‘ ProjectName ’. Để kích hoạt tính làm tổ loại trừ ‘chính /’ từ

enter image description here

Giải pháp:

--Pic 8--

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