Nhận các tệp jar nguồn được đính kèm với Eclipse cho các phụ thuộc do Maven quản lý


176

Tôi đang sử dụng Maven (và Tích hợp Maven Eclipse) để 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àm cách nào tôi có thể thiết lập Maven để tự động nhận các tệp đính kèm nguồn và javadoc và đăng ký chúng đúng cách với Eclipse?


Câu hỏi liên quan hỏi làm thế nào để luôn tải xuống nguồn và javadoc khi sử dụng maven: stackoverflow.com/questions/5780758/ Kẻ
Lưu lượng

Câu trả lời:


226

Tôi chắc chắn rằng plugin Mecl của m2eclipse cho Eclipse - theo cách khác - có thể làm điều đó. Bạn có thể định 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 vào Cửa sổ> Tùy chọn> Maven và kiểm tra các tùy chọn "Tải xuống Nguồn tạo tác" và "Tải xuống Artifact JavaDoc".

Ảnh chụp màn hình của Maven Preferences


Vâng, tôi mới bắt đầu sử dụng m2eclipse, và nó có thể sử dụng cái này (và nhiều thứ khác nữa).
Thilo

44
Cả hai câu trả lời này đều là câu trả lời. Tại sao họ được bỏ phiếu? Tôi đã có thể tải xuống các nguồn bằng cách bấm điều khiển dự án trong chế độ xem Điều hướng và chọn "m2 Maven" -> "Tải xuống nguồn". 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.
Alex Worden

8
Có vẻ như nếu JAR đã biên dịch đã được tải xuống, Eclipse sẽ không thử lấy JAR nguồn / Javadoc ngay lập tức. Dường như sửa đổi POM chứa phụ thuộc vào 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 bộ đệm của kho lưu trữ Maven.
Francis Gagné

13
@Francis - Sau khi thực hiện thay đổi ở trên, nhấp chuột phải vào dự án của bạn và chọn "Maven> Cập nhật dự án ..." Điều này sẽ khiến các tệp nguồn của bạn tải xuống.
carbontax

3
Thay vì tải xuống các nguồn cho tất cả các phụ thuộc, có thể tải xuống chỉ cho một số phụ thuộc bằng cách chỉ định nó trong pom cùng với chính phụ thuộc, có thể b qua một số thẻ bên trong trong thẻ phụ thuộc hoặc một cái gì đó tương tự không?
nanosoft

127
mvn eclipse:eclipse -DdownloadSources=true

hoặc là

mvn eclipse:eclipse -DdownloadJavadocs=true

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

Ngoài ra, =truephần này là không bắt buộc, vì vậy bạn có thể sử dụng

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

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

2
Mùa xuân bây giờ cung cấp cho họ.
Robin Green

Lưu ý rằng câu trả lời này là hơn 10 năm tuổi. Sử dụng plugin m2e trong nhật thực thay vì maven tạo tập tin cấu hình nhật thực.
Thorbjørn Ravn Andersen

71

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ớ các đối số dòng lệnh, bạn cũng có thể chỉ cần thêm vào tệp downloadSource và downloadJavadocs vào phần maven-eclipse-plugin của pom.xml của bạn:

<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>

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

@marcorossi Xin lỗi, tôi không chắc là có thể không.
lật đổ

Tôi không tin điều này là phù hợp. Chắc chắn các cài đặt tải xuống nguồn và Javadoc là một sở thích của người dùng, không phải là mối quan tâm ở cấp độ dự án? Xem câu trả lời của tôi dưới đây để biết cách đặt nó trong settings.xmltập tin.
Duncan Jones

Tôi đã nhận được cảnh báo này: [CẢNH BÁO] 'build.plugins.plugin.version' cho org.apache.maven.plugins: maven-eclipse-plugin bị thiếu. Để khắc phục, bạn có thể thêm một cái gì đó như thế này bên dưới <artifactId>: <version> 2.9 </ version>
Christiaan

16

Tôi không muốn đặt các cài đặt tải xuống nguồn / Javadoc vào pom.xmltệp dự án vì tôi cảm thấy đây là các tùy chọn người dùng, 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.xmltập tin của mình :

<?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 cài đặt này trong .m2 tuy nhiên các nguồn và javadocs không được sao chép. Lệnh sau đây rõ ràng trên CLI mang đến các nguồn và javadocs mặc dù: phụ thuộc mvn: phụ thuộc nguồn: giải quyết -D classifier = javadoc Bạn có suy nghĩ gì không?
Arun Gupta

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

9

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


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

8

Nếu các lọ nguồn nằm trong kho lưu trữ cục bộ và bạn đang sử dụng Eclipses maven hỗ trợ thì các nguồn sẽ được tự động đí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 nhất định. Không chắc chắn làm thế nào để làm tương tự với các tài liệu mặc dù.


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

4

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

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

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

Surajz



3

Tôi đã thử windows-> 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 -DdoadSource = 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 của jar jar có sẵn trong đường dẫn lớp. Do đó, bản dựng mới đã giải quyết được vấn đề ...


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: eclipse: eclipse -DdoadSource = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Cảm ơn :)
vishwarajanand

2

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

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

Dưới cửa sổ chỉ có "cửa sổ mới", "trình chỉnh sửa mới" "phối cảnh mở", v.v.

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

Chẳ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 rất 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 lại từ đầu.

Tôi vẫn đang tìm 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.


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 phụ thuộc mvn: nguồn. Tôi đã kiểm tra điều này.


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 được chúng vì một số lý do (mất mạng?), Maven tạo 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 tạo tác khỏi .m2 / kho lưu trữ và khởi động lại không gian làm việc nhật thực với nguồn tải xuống / javadoc đã kiểm tra và cập nhật các dự án khi khởi động cũng được kiểm tra. 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 là 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ó thể quy trình này không quá "khoa học", nhưng đối với tôi đã thành công.


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 dung / hy vọng điều đó sẽ xảy ra cho các phụ thuộc mới, chứ không phải các phụ thuộc hiện có.

Đối với các phụ thuộc hiện có, tôi duyệt qua trình thám hiểm 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ì xảy ra (không có thanh tiến trình hoặc dấu hiệu cho thấy nó đang làm gì). Tuy nhiên, nó đã tải xuống khi tôi có thể chuyển sang nguồn trong commons-lang ngay bây giờ.


1

lật đổ đề xuất sử dụng 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ĩ rằng điều này vẫn sẽ không đính kèm javadoc và các nguồn (vì tôi đã thử không thành công với tùy chọn -DdoadSource trước đó).

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


1

Đối với Indigo (và có lẽ là Helios), các hộp kiểm được đề cập ở trên được đặt ở đây:

Cửa sổ -> Tùy chọn -> Maven


0

Tôi đã có một vấn đề tương tự, và giải pháp phù hợp nhất với tôi là đưa nguồn vào cùng một jar với mã được biên dịch (vì vậy một thư mục đã cho trong jar sẽ bao gồm cả hai Foo.javaFoo.class). Eclipse tự động liên kết 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 cổ vật.


0

Sau khi đặt Thuộc tính ở cấp Dự án hoặc cấp Thuộc tính người dùng, vui lòng thực hiện Maven -> Cập nhật dự án (Cập nhật lực lượng). Nó tải các nguồn

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.