2008-11-22 27 views
155

Tôi đang sử dụng Maven (và Tích hợp Eclipse Maven) để quản lý các phụ thuộc cho các dự án Java của tôi trong Eclipse. Tính năng tải xuống tự động cho các tệp JAR từ kho lưu trữ Maven là một trình tiết kiệm thời gian thực. Thật không may, nó không bao gồm tài liệu API và mã nguồn.Lấy tệp jar nguồn được đính kèm với Eclipse cho các phụ thuộc do Maven quản lý

Làm cách nào để thiết lập Maven tự động cũng nhận được tệp đính kèm nguồn và javadoc và đăng ký chúng đúng cách với Eclipse?

+0

Câu hỏi liên quan yêu cầu cách luôn ** tải xuống nguồn và javadoc khi sử dụng maven: http://stackoverflow.com/questions/5780758/maven-always-download-sources-and-javadocs – Flow

Trả lời

192

Tôi chắc chắn m2eclipse Maven plugin cho Eclipse - một cách khác xung quanh - có thể làm điều đó. Bạn có thể cấu hình nó để tải xuống cả tệp nguồn và javadoc tự động cho bạn.

Điều này đạt được bằng cách đi vào Window> Preferences> Maven và kiểm tra tùy chọn "Tải xuống nguồn tạo tác" và "Tải xuống tạo tác JavaDoc".

Screenshot of Maven Preferences

+0

Có, tôi chỉ mới bắt đầu sử dụng m2eclipse, và nó lấy xe của điều này (và nhiều thứ khác maven). – Thilo

+40

Không có câu trả lời nào trong số này là câu trả lời. Tại sao họ lại được bình chọn? Tôi đã có thể tải xuống các nguồn bằng cách điều khiển nhấp vào dự án trong chế độ xem Điều hướng và chọn "m2 Maven" -> "Nguồn tải xuống". Sau đó tôi có thể bấm lệnh (mac) trên lớp để điều hướng đến nguồn được liên kết. –

+8

Dường như nếu JAR đã biên dịch đã được tải xuống, Eclipse sẽ không cố gắng lấy các JAR nguồn/Javadoc ngay lập tức. Dường như việc sửa đổi một POM có chứa một sự phụ thuộc vào các POM mà tôi muốn nguồn/Javadoc trong Eclipse và lưu POM tải xuống nguồn/Javadoc cho các phụ thuộc, ngay cả khi JAR đã biên dịch đã có trong kho lưu trữ Maven. –

120
mvn eclipse:eclipse -DdownloadSources=true 

hoặc

mvn eclipse:eclipse -DdownloadJavadocs=true 

hoặc bạn có thể thêm cả cờ, như Spencer K chỉ ra.

Thêm vào đó, phần =true là không cần thiết, vì vậy bạn có thể sử dụng

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs 
+7

hoặc cả hai! mvn eclipse: eclipse -Download Tải xuống tài nguyên = true -DdownloadJavadocs = true Điều này chỉ hoạt động nếu nguồn và javadocs được cung cấp cho repo bạn đang tải xuống. Đôi khi chúng không được cung cấp như Mùa xuân. –

+2

Mùa xuân hiện cung cấp cho họ. –

+0

Câu trả lời tuyệt vời! Cảm ơn nhiều. – asgs

3

Ngoài ra còn có một similiar question rằng câu trả lời này và bao gồm các thiết lập pom ví dụ.

3

Nếu bạn đang sử dụng meclipse làm

cửa sổ -> maven -> Tải Artifact Nguồn (chọn kiểm tra)

(Nếu bạn vẫn nhận được đính kèm cửa sổ nguồn, sau đó nhấp vào đính kèm nút tệp và đóng cửa sổ nguồn đính kèm. Lần tiếp theo bạn cố gắng xem nguồn sẽ mở nguồn chính xác)

Surajz

+0

không hoạt động với tôi – cmcginty

70

Các câu trả lời khác về công việc này, nhưng nếu bạn muốn tránh phải nhớ đối số dòng lệnh, bạn cũng có thể chỉ cần thêm cấu hình tải xuốngSource và tải xuốngJavadocs vào phần maven-eclipse-plugin của pom.xml:

<project> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <configuration> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
        ... other stuff ... 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    ... 
</project> 
+0

Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn! –

+0

tôi có thể đặt giá trị này ở mức phụ thuộc không? – marcorossi

+0

@marcorossi Rất tiếc, tôi không chắc liệu điều đó có thể thực hiện được hay không. – overthink

6

Nếu các lọ nguồn nằm trong kho lưu trữ cục bộ và bạn đang sử dụng tính năng hỗ trợ của các đối tượng ảo, các nguồn sẽ tự động được đính kèm. Bạn có thể chạy mvn dependency:sources để tải xuống tất cả các lọ nguồn cho một dự án cụ thể. Không chắc chắn làm thế nào để làm như vậy với các tài liệu mặc dù.

+0

Điều này phù hợp với tôi. Sau khi chạy 'mvn dependency: sources', tôi đã có thể nhấp qua trong Eclipse để đọc nguồn. Không cần mucking bổ sung với m2e. Để tải xuống javadocs bạn làm 'mvn dependency: sources -Dclassifier = javadoc'. –

1

trong phiên bản của tôi về helios Eclipse với m2Eclipse không có

window --> maven --> Download Artifact Sources (select check) 

Dưới cửa sổ chỉ là "cửa sổ mới", "biên tập mới" "quan điểm mở" vv

Nếu bạn click chuột phải vào dự án của bạn, sau đó chọn maven -> tải xuống nguồn

Không có gì xảy ra. không có nguồn nào được tải xuống, không có tệp pom nào được cập nhật, không có cửa sổ bật lên hỏi nguồn nào.

Làm mvn xxx bên ngoài nhật thực là nguy hiểm - một số lệnh không hoạt động với m2ecilpse - Tôi đã làm điều đó một lần và mất toàn bộ dự án, phải cài đặt lại nhật thực và bắt đầu từ đầu.

Im vẫn đang tìm kiếm một cách để có được ecilpse và maven để tìm và sử dụng nguồn của các lọ bên ngoài như servlet-api.

1

Tôi đã thêm cấu hình pom vào plugin maven-eclipse để tải xuống nguồn và javadocs, nhưng tôi hình/hy vọng điều đó sẽ xảy ra cho các phụ thuộc mới, không phụ thuộc vào các phụ thuộc hiện tại.

Đối với các phụ thuộc hiện tại, tôi đã duyệt trong trình khám phá gói xuống "Phụ thuộc Maven" và nhấp chuột phải vào commons-lang-2.5.jar, đã chọn Maven | Tải xuống Nguồn và ... không có gì xuất hiện xảy ra (không có thanh tiến trình hoặc chỉ báo rằng nó đang hoạt động). Nó đã làm, tuy nhiên, tải về như tôi có thể nhảy vào nguồn trong commons-lang bây giờ.

1

overthink đề nghị sử dụng các thiết lập trong pom:

<project> 
... 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <configuration> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>true</downloadJavadocs> 
       ... other stuff ... 
      </configuration> 
     </plugin> 
    </plgins> 
</build> 
... 

Đầu tiên tôi nghĩ đây vẫn sẽ không gắn javadoc và nguồn (như tôi đã cố gắng nhưng không thành công với điều đó -DdownloadSources tùy chọn trước).

Nhưng ngạc nhiên - tệp .classpath IS nhận được các nguồn và javadoc được đính kèm khi sử dụng biến thể POM!

1

Đối Indigo (và có lẽ Helios) các hộp kiểm bên nêu trên đều nằm ở đây:

Window -> Preferences -> Maven

0

Tôi đã có một vấn đề tương tự, và các giải pháp mà làm việc tốt nhất cho tôi là bao gồm nguồn trong cùng một jar với mã được biên dịch (do đó một thư mục nhất định trong bình chứa sẽ bao gồm cả Foo.javaFoo.class). Eclipse tự động kết hợp nguồn với mã được biên dịch và tự động cung cấp JavaDoc từ nguồn. Rõ ràng, điều đó chỉ hữu ích nếu bạn kiểm soát phần tạo tác.

2

Thay đổi pom cho maven-eclipse-plugin để bao gồm nguồn/javadoc chỉ áp dụng cho các phụ thuộc mới được thêm vào pom. Nếu chúng ta cần áp dụng cho các phụ thuộc hiện có, chúng ta phải chạy mvn dependency: sources. Tôi đã kiểm tra điều này.

3

Tôi đã thử cửa sổ-> pref ..-> Maven Nhưng nó không hoạt động. Do đó tôi đã tạo một đường dẫn lớp mới với lệnh mvn eclipse: eclipse -DdownloadSources = true và làm mới không gian làm việc một lần. voila .. Nguồn được đính kèm.

Mục nhập của mã nguồn có sẵn trong đường dẫn lớp. Do đó xây dựng mới giải quyết được vấn đề ...

+0

Với giải pháp của bạn, tôi có thể chọn và chọn mô-đun nào tôi muốn lấy nguồn.Đơn giản chỉ cần cd vào mô-đun đó và xây dựng với "mvn eclipse: nhật thực sạch: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Cảm ơn :) –

14

Tôi không muốn đặt cài đặt tải xuống nguồn/Javadoc vào tệp pom.xml của dự án vì tôi cảm thấy đây là tùy chọn của người dùng chứ không phải thuộc tính dự án. Thay vào đó, tôi đặt chúng trong một hồ sơ trong settings.xml tập tin của tôi:

<?xml version="1.0" encoding="UTF-8"?> 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 

    <profiles> 
    <profile> 
     <id>sources-and-javadocs</id> 
     <properties> 
     <downloadSources>true</downloadSources> 
     <downloadJavadocs>true</downloadJavadocs> 
     </properties> 
    </profile> 
    </profiles> 

    <activeProfiles> 
    <activeProfile>sources-and-javadocs</activeProfile> 
    </activeProfiles> 
</settings> 
+1

Tôi đã sao chép tệp settings.xml này bằng .m2 tuy nhiên các nguồn và javadocs không được sao chép. Các lệnh sau đây rõ ràng trên CLI mang lại các nguồn và javadocs mặc dù: mvn phụ thuộc: nguồn phụ thuộc: giải quyết -Dclassifier = javadoc Bất kỳ suy nghĩ? –

+0

Có lẽ điều này hoạt động, nhưng xin vui lòng giải thích, làm thế nào là plugin eclipse maven phải tìm các thiết lập cấu hình? Bạn nghĩ rằng nó sẽ tìm kiếm tài sản toàn cầu? – chrisinmtown

5

Nhấp chuột phải vào dự án -> maven -> nguồn tải

+2

Mọi người đều nói làm thế nào để kích hoạt nó không làm thế nào để có được maven để tải về các nguồn! sau khi bật tùy chọn – Chad

0

Sau khi Thiết Properties hoặc tại Dự án Cấp hoặc User Thuộc tính mức, Hãy làm một Maven -> Cập nhật dự án (Force Update).Nó tải xuống các nguồn

2

Kiểm tra nguồn tải xuống/javadoc trong tùy chọn Eclipse-Maven, đôi khi không đủ. Trong trường hợp maven không tải xuống được vì lý do nào đó (mạng bị mất điện?), Maven sẽ tạo ra một số tệp * .lastUpdated, sau đó sẽ không bao giờ tải xuống nữa. Giải pháp thực nghiệm của tôi là xóa thư mục artifact từ .m2/repository và khởi động lại không gian làm việc eclipse bằng các dự án tải xuống nguồn/javadoc đã tải về và cập nhật lúc khởi động được chọn. Sau khi không gian làm việc đã được khởi động lại, có thể một số dự án có thể bị đánh dấu do lỗi, trong khi tiến trình nhật thực đang tải xuống, thì mọi lỗi sẽ bị xóa. Có lẽ quy trình này không phải là "khoa học", nhưng đối với tôi đã thành công.

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