2012-07-06 25 views
38

Trong dự án của tôi, tôi đang sử dụng tệp JAR được cung cấp qua Maven. Nhưng những gì Maven mang lại cho tôi chỉ là cái bình - không có javadocs và không có nguồn. Nhấn "Tải xuống nguồn" không có hiệu lực: Eclipse vẫn không tìm thấy nguồn của jar.Làm thế nào để tải xuống các nguồn cho một cái lọ với Maven?

Điều này phụ thuộc vào điều gì? Kho lưu trữ có nên cung cấp nguồn tự động không?

Tôi có thể cần viết điều gì đó trong POM để hướng dẫn Maven tải xuống các nguồn không?

pom hiện tại của tôi sau:

<repositories> 
    <repository> 
     <id>xuggle repo</id> 
     <url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url> 
    </repository> 
</repositories> 

<dependencies> 

    <dependency> 
     <groupId>xuggle</groupId> 
     <artifactId>xuggle-xuggler</artifactId> 
     <version>5.3</version> 
     <type>rar</type> 
    </dependency> 

</dependencies> 

Tại sao Maven không nói bất kỳ ý kiến ​​về nguồn nó Tải hình ảnh đẹp không?

Trả lời

63

Thực hiện mvn dependency:sources sẽ buộc maven tải xuống tất cả các nguồn của tất cả các lọ trong dự án, nếu các nguồn có sẵn (được tải lên trong kho lưu trữ nơi tạo tác được lưu trữ). Nếu bạn muốn tải về javadoc lệnh là mvn dependency:resolve -Dclassifier=javadoc

Nó cũng có thể tạo ra một hồ sơ cá nhân trong tập tin settings.xml bạn và bao gồm các thuộc tính sau:

<properties> 
    <downloadSources>true</downloadSources> 
    <downloadJavadocs>true</downloadJavadocs> 
</properties> 
+0

Nhưng nếu không có nguồn trong kho Maven chỉ sẽ không làm gì cả im lặng, phải không? Không có lỗi, không có cảnh báo? –

+0

vâng, tôi cho rằng, ít nhất là nếu nó không hoạt động ở một số chế độ rất dài dòng/gỡ lỗi. Có lẽ nó có thể chạy nó trong chế độ debug/verbose và grep cho các tin nhắn cụ thể. – hovanessyan

+0

Tôi đã thêm một câu trả lời để mở rộng thêm các thuộc tính này vào tệp settings.xml của maven – RaamEE

3

Các nguồn/javadoc lọ có thể không được cung cấp và không có trong kho - không có gì yêu cầu một bình nguồn/javadoc có mặt.

27
mvn dependency:sources 
mvn dependency:resolve -Dclassifier=javadoc 

nếu nó không có nguồn nó nên nói điều gì đó như

[INFO] The following files have NOT been resolved: 
[INFO] com.oracle:ojdbc6:java-source:sources:12.1.0.1 
[INFO] javax:javaee-api:java-source:sources:6.0 
3

mở rộng trên @hovanessyan answer.

Cấu hình cơ bản để bật tài nguyên tải xuống và tải xuốngJavadocs, trong tệp settings.xml của Maven sẽ trông như thế này. ví dụ: hồ sơ id là downloadSources

<!-- add the profile under profiles section --> 

    <profile> 
     <id>downloadSources</id> 
     <properties> 
      <downloadSources>true</downloadSources> 
      <downloadJavadocs>true</downloadJavadocs>   
     </properties> 
    </profile> 

<!-- activate the profile under activeProfiles section --> 

    <activeProfiles> 
    <activeProfile>downloadSources</activeProfile> 
    </activeProfiles> 
0

Trong nhật thực, rigth click vào dự án của bạn sau đó Maven>Download Sources lại Maven>Download Javadoc

6

Tốt nhất là không phải dựa vào các plugin Eclipse vì nó bị phản đối. Sử dụng các thuộc tính downloadSourcesdownloadJavadocs không hoạt động đối với tôi. Câu trả lời được đăng ở trên liên quan đến việc sử dụng từ plugin phụ thuộc. Tuy nhiên, bạn có thể muốn tự động tải xuống các nguồn và javadocs. Hơn nữa, bạn có thể luôn muốn tạo một bình nguồn và một bình javadoc. Đặt cái này vào trong dự án của bạn. Nếu bạn sử dụng các mô-đun, hãy đặt vào pom mẹ của bạn.

<build> 
    <plugins> 
     <!-- download sources and javadoc --> 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
        <id>download-sources</id> 
        <goals> 
         <goal>sources</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>download-javadoc</id> 
        <configuration> 
         <classifier>javadoc</classifier> 
        </configuration> 
        <goals> 
         <goal>resolve</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Always create javadoc jar. --> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.4</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Always create source jar. --> 
     <plugin> 
      <artifactId>maven-source-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
        <id>attach-sources</id> 
        <goals> 
         <goal>jar</goal> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
1

Bạn cũng có thể tải về các nguồn dưới target/dependencies sử dụng:

mvn -Dclassifier=sources dependency:copy-dependencies 
Các vấn đề liên quan