Làm thế nào để định cấu hình đường dẫn xây dựng Eclipse để sử dụng các phụ thuộc Maven?


124

Tôi muốn tận dụng các tính năng mà Maven cung cấp để quản lý các phần phụ thuộc trong một dự án. Hiểu biết ngắn gọn của tôi về cách hoạt động của Maven là nó sẽ hỏi các JAR cần thiết và sau đó xây dựng dự án với các thư viện này.

Hiện tại, tôi có một tệp POM đơn giản được thiết lập để thử nghiệm:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jamesgoodwin.test</groupId>
  <artifactId>com.jamesgoodwin.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Để quản lý các phần phụ thuộc, tôi thường thêm dự án hoặc JAR vào đường dẫn xây dựng và sau đó tôi sẽ có thể xây dựng dự án của mình ..

Nhưng khi sử dụng M2Eclipse, các phụ thuộc không được tự động thêm vào đường dẫn xây dựng. Có cấu hình nào để cho Eclipse biết rằng Maven đang quản lý các phần phụ thuộc không?

Câu trả lời:


116

Nếu bạn nhấp chuột phải vào dự án của mình, sẽ có một tùy chọn trong "maven" để "bật quản lý phụ thuộc". Đó là nó.


2
m2eclipse không làm điều này theo mặc định nếu bạn nhập một dự án được tạo bằng mvn eclipse: eclipse, vì vậy điều này dường như luôn khiến mọi người khó khăn.
matt b

28
Nó thực sự đã được kích hoạt cho dự án của tôi. Có lẽ vì tôi đã chọn thêm tệp POM vào một dự án hiện có? Tuy nhiên, làm Maven> Cập nhật cấu hình dự án dường như đã sửa nó cho tôi. Ngoài ra, câu trả lời của bạn cuối cùng đã dẫn tôi đến việc khám phá thanh công cụ đó nơi tôi có thể sửa chữa dự án. Rất cám ơn
James Goodwin

12
Điều gì sẽ xảy ra nếu không có tùy chọn "Maven" trong menu chuột phải, mặc dù dường như tôi đã cài đặt m2eclipse?
dfrankow

85
À, "Configure" => "Convert to Maven Project" là bạn của bạn!
dfrankow

2
@dfrankow thì sao nếu tùy chọn "Cấu hình" => "Chuyển đổi sang Dự án Maven" không tồn tại ??
vasilakisfil

67

nếu bạn thực hiện

mvn eclipse:clean

theo dõi bởi

mvn eclipse:eclipse

if sẽ chuẩn bị .classpathtệp nhật thực cho bạn. Nghĩa là, các lệnh này được chạy với maven từ dòng lệnh tức là bên ngoài eclipse.


Lưu ý rằng điều này hoạt động bằng cách sử dụng một biến classpath (M2_REPO) để tham chiếu đến các phần phụ thuộc của bạn, nó không sử dụng m2eclipse và tôi không tin rằng nó sẽ chọn và các phần phụ thuộc bạn thêm vào khi bạn làm việc trong dự án - nhưng điều đó thật tuyệt khi nhận được thiết lập ban đầu đang diễn ra
matt b

@matt b: Bạn cần làm lại mvn eclipse: eclipse mỗi khi các phần phụ thuộc của bạn thay đổi.
Buhb

Để thêm vào những gì Buhb đã nói, hãy thực hiện mnv eclipse: eclipse trên dòng lệnh và làm mới dự án Eclipse mỗi khi bạn thêm nhiều deps vào pom.xml.
Binil Thomas

5
Không cần điều này khi sử dụng plugin m2eclipse.
Pascal Thivent

3
Tôi đang sử dụng plugin m2eclipse và đã gặp sự cố sau khi nhập một dự án maven hiện có vào eclipse. Đang làm mvn eclipse:cleanmvn eclipse:eclipsethực sự đã khắc phục được sự cố cho tôi.
aioobe

29

Tôi giả sử bạn đang sử dụng m2eclipse như bạn đã đề cập. Tuy nhiên, không rõ bạn có tạo dự án của mình trong Eclipse hay không nên tôi sẽ cố gắng đề cập đến tất cả các trường hợp.

  1. Nếu bạn đã tạo dự án "Java" trong Eclipse (Ctrl + N> Dự án Java), sau đó nhấp chuột phải vào dự án trong dạng xem Package Explorer và đi tới Maven> Bật quản lý phụ thuộc (tùy thuộc vào cấu trúc dự án ban đầu, bạn có thể sửa đổi nó để khớp với maven's, ví dụ bằng cách thêm src/javavào các thư mục nguồn trên đường dẫn xây dựng).

  2. Nếu bạn đã tạo một "Maven Project" trong Eclipse (Ctrl + N> Maven Project), thì nó phải là "Maven ready".

  3. Nếu bạn đã tạo một dự án Maven bên ngoài Eclipse (theo cách thủ công hoặc với một kiểu mẫu), thì chỉ cần nhập nó vào Eclipse ( nhấp chuột phải vào dạng xem Package Explorer và chọn Import ...> Maven Projects ) và nó sẽ là "Maven ready".

Bây giờ, để thêm phụ thuộc, hãy nhấp chuột phải vào dự án và chọn Maven> Thêm phụ thuộc ) hoặc chỉnh sửa pom theo cách thủ công.

Tái bút: tránh sử dụng maven-eclipse-plugin nếu bạn đang sử dụng m2eclipse. Hoàn toàn không cần thiết, sẽ rối rắm, sinh ra lộn xộn. Không, thực sự, đừng sử dụng nó trừ khi bạn thực sự biết mình đang làm gì.


2
Tôi vừa phát hiện ra rằng maven-eclipse-plugin là nguyên nhân gây ra các lỗi phụ thuộc kỳ lạ chưa được giải quyết của tôi. Cảm ơn!
vaughan

1
Tôi chỉ sử dụng EclipseNeon được tải xuống từ trang web chính thức .. Không có tùy chọn Maven trong menu sau khi tôi tạo dự án java tiêu chuẩn. Chúng tôi có cần cài đặt một thứ gì đó riêng biệt hay mọi thứ đã được tải xuống với Neon?
Ewoks

@Pascal Thivent, tôi đã nhập dự án Maven. Tôi không thể tìm ra giải pháp cho vấn đề này
Syed

19

Thêm cái này vào tệp .classpath ..

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

Cám ơn


1
vâng, tôi cần thêm nó theo cách thủ công ở khắp mọi nơi trong vài năm qua .... tại sao họ không loại bỏ các plugin eclipse để tự động thu thập lại các phụ thuộc của maven ??
dao cạo

1
Cảm ơn vì giải pháp này. Điều này đã làm việc cho tôi. Tôi đã vô tình xóa các tệp .project và .classpath. Giải pháp này làm việc cho tôi để thêm phụ thuộc maven trong đường dẫn lớp,
Tahir Mehmood

Các phím tắt để tạo ra file classpath trên tự động là dự án -> Maven -> Cập nhật dự án Nếu không chỉ đơn giản là Alt + F5
Venkateswara Rao

Làm việc cho tôi quá. Đã giải quyết hầu hết các phần phụ thuộc còn thiếu của tôi nhưng vẫn còn một số vấn đề, vì vậy tôi tự hỏi liệu các giải pháp thân thiện với người dùng hơn không hoạt động vì có một lỗi nhỏ ở đâu đó (nhưng hành vi này không giúp gỡ lỗi ...)
xenoid

14

Nhấp chuột phải vào dự án Cấu hình> chuyển đổi thành dự án Maven

Sau đó, bạn có thể xem tất cả các Menu liên quan đến Maven cho dự án của bạn.


đúng cách nếu bạn didnt tạo một dự án mvn ở nơi đầu tiên
Hannes Schneidermayer

10

Tôi đã làm như thế này ..

Nhấp chuột phải vào dự án -> cấu hình -> chuyển đổi sang dự án maven. Nhấp chuột phải vào dự án -> maven -> thêm phụ thuộc.


5

Trong Eclipse (Sao Hỏa), hãy truy cập:

Thuộc tính dự án -> Maven. Đảm bảo rằng "Giải quyết sự phụ thuộc từ các dự án không gian làm việc" bị tắt .


Điều này không giải quyết được vấn đề ban đầu, tuy nhiên nó DID giải quyết một vấn đề khó chịu khác mà tôi đã gặp phải trong nhiều tuần - Sau khi tắt tùy chọn đó, dự án của tôi, vốn chỉ chạy từ một dòng lệnh maven, hiện đang chạy lại bên trong eclipse! Cảm ơn bạn!
Bill Hileman

4

Tôi không tìm thấy maven hoặc menu cấu hình nhưng đã tìm thấy nút sau giải quyết được sự cố của tôi:

nhập mô tả hình ảnh ở đây


2

Khi m2eclipse được cài đặt đúng cách, nó sẽ tự động thêm các phần phụ thuộc. Tuy nhiên, bạn nên tạo các tệp dự án nhật thực bằng cách nhập:

mvn eclipse:m2eclipse

hoặc, cách khác nếu bạn không sử dụng m2eclipse:

mvn eclipse:eclipse

3
Chú ý: kể từ phiên bản 2.8 maven-eclipse-plugin không hỗ trợ "nhật thực: m2eclipse" nữa (không thể tìm thấy lý do / thông tin tại sao)
Wolkenarchitekt

1

Tôi đã có một sự thay đổi nhỏ gây ra một số vấn đề - nhiều dự án con trong một dự án. Trong trường hợp này, tôi cần phải đi vào từng thư mục riêng lẻ có chứa POM, thực hiện lệnh mvn eclipse: eclipse và sau đó sao chép / hợp nhất các mục classpath vào tệp classpath dự án của tôi theo cách thủ công.


1

Đối với các phiên bản Eclipse mới hơn (> = Mars), nhấp chuột phải vào dự án> cấu hình> chuyển đổi sang dự án Maven


1

Thêm câu trả lời của tôi vì một số lý do:

  • Bằng cách nào đó, không có câu trả lời nào được liệt kê giải quyết trực tiếp vấn đề của tôi.
  • Tôi không tìm thấy "Bật quản lý người phụ thuộc" trong Maven. Tôi đang sử dụng bản dựng Eclipse 4.4.2 vào Thứ 4, ngày 4 tháng 2 năm 2015.

Điều đã giúp tôi là một tùy chọn khác được Maven gọi là "Cập nhật dự án" và sau đó khi tôi nhấp vào nó, cửa sổ này sẽ mở ra có hộp kiểm cho biết "Buộc cập nhật Ảnh chụp / Bản phát hành". Mục đích thực sự của hộp kiểm này là khác nhau mà tôi biết nhưng bằng cách nào đó nó đã giải quyết được vấn đề phụ thuộc. nhập mô tả hình ảnh ở đây


1

Không ai trong số đó giải quyết được vấn đề của tôi. nhưng những gì tôi đã làm là nếu nhấp vào pom.xml, có một tab ở dưới cùng có tên là phụ thuộc. trong tab này nó được chia thành 2 phần, một phần được gọi là phần phụ thuộc và phần được gọi là phần quản lý sự phụ thuộc. chọn mọi thứ trong phần phụ thuộc và nhấp vào thêm để được kiểm soát quản lý phần phụ thuộc. đóng và mở lại dự án của bạn.


0

Có lẽ bạn có thể xem xét plugin maven-eclipse thay vì M2Eclipse.

Ở đó, về cơ bản, bạn thêm cấu hình maven-eclipse-plugin vào pom.xml của mình và sau đó thực thi cấu hình mvn eclipse:eclipsenày sẽ tạo ra các tệp .projectvà yêu cầu .classpathcho Eclipse. Sau đó, bạn sẽ có đường dẫn xây dựng chính xác trong Eclipse.


eclipse: eclipse là xấu, thêm tất cả các thư viện, từng cái một, vào phần phụ thuộc của bạn thay vì dựa vào Maven
razor

0

Đảm bảo rằng POM của bạn tuân theo quy ước đặt tên và được đặt tên bằng chữ viết thường là pom.xmlvà KHÔNG POM.xml.

Trong trường hợp của tôi, tất cả đều đúng, nhưng Eclipse vẫn phàn nàn khi cố gắng Nhấp chuột phải và Update project configuration- nói với tôi rằng không thể đọc POM. Đã đổi tên thành chữ thường - pom.xmltừ POM.xml- và nó hoạt động.


0

Tôi cũng gặp vấn đề này. Khi tôi thêm các phần phụ thuộc vào pom.xml, tôi đã kiểm tra trong thư mục cục bộ /Users/xyz/.m2/và các bình đã được tải xuống ở đó, nhưng không thể thêm đường dẫn xây dựng của nhật thực.

Phiên bản nhật thực của tôi: Mars.2 Release (4.5.2)

nhấp chuột phải vào dự án > Maven > Bật độ phân giải không gian làm việc

Và điều này đã giải quyết được vấn đề của tôi.


0

Thông thường, bạn có thể sao chép tệp .classpath từ một dự án đang hoạt động vì không có bất kỳ dự án nào cụ thể ở đây giả sử bạn được cấu trúc như một dự án Maven tiêu chuẩn.


0

Điều này đã làm việc cho tôi trong Eclipse Oxygen (4.7.0):

Nhấp chuột phải vào Project -> Maven -> Chọn Maven Profiles ... sau đó tích vào ô Repository Proxy, nhấn OK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.