Nhận JAR nguồn từ kho lưu trữ Maven


Câu trả lời:


786

Maven Micro-Tip: Nhận nguồn và Javadocs

Khi bạn đang sử dụng Maven trong IDE, bạn thường thấy cần IDE của mình để giải quyết mã nguồn và Javadocs cho các phụ thuộc thư viện của bạn. Có một cách dễ dàng để thực hiện mục tiêu đó.

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

Lệnh đầu tiên sẽ cố tải xuống mã nguồn cho từng phụ thuộc trong tệp pom của bạn.

Lệnh thứ hai sẽ cố tải xuống Javadocs.

Maven là niềm vui của những người đóng gói thư viện ở đây. Vì vậy, một số trong số họ sẽ không được đóng gói mã nguồn và nhiều người trong số họ sẽ không có Javadocs.

Trong trường hợp bạn có nhiều phụ thuộc, bạn cũng nên sử dụng các thể loại / loại trừ để lấy các tạo phẩm cụ thể, ví dụ, lệnh sau đây sẽ chỉ tải xuống các nguồn cho sự phụ thuộc với một artifactId cụ thể:

mvn dependency:sources -DincludeArtifactIds=guava

Nguồn: http://tedwise.com/2010/01/27/maven-micro-tip-get-source-and-javadocs/

Tài liệu: https://maven.apache.org/plugins/maven-dependency-plugin/source-mojo.html


10
Nó đặt chúng ở đâu khi chúng được tải xuống?
James Moore

15
Nó đặt chúng trong cùng thư mục với các tệp JAR nhị phân trong M2_HOME.
Alain O'Dea

19
Nếu bạn đang sử dụng nhật thực, cũng có thể hữu ích khi thực hiện "mvn eclipse: eclipse" sau đó làm mới dự án của bạn trong nhật thực - giúp bạn không phải gắn nguồn thủ công vào mỗi tệp.
unigeek

1
Tôi không thể tìm thấy các nguồn và javadocs sau khi chúng được tải xuống. Tôi đã kiểm tra mọi thư mục trong M2_HOME
Patrick Kiernan

2
Sau khi mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA tự động thông báo javadocs, rất hay.
Jonik

89

Định cấu hình và chạy plugin maven-eclipse, (ví dụ từ dòng lệnh mvn eclipse:eclipse)

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

Ý anh là gì? Bạn có nghĩa là các nguồn và tài liệu được tải xuống khi bạn chạy mvn eclipse:eclipsenếu bạn thêm nó vào tệp POM?
Lii

3
Đúng. Đơn giản như thế.
RobAu

@RobAu, nguồn sẽ được tải xuống ở đâu, nó sẽ được gắn vào dự án mà nó tự hoặc ở một nơi khác?
Jaskey

1
Nó sẽ được tải xuống dưới dạng jar trong của bạn M2_REPOdưới dạng xxxx-yy-nguồn.jar, tại cùng vị trí với jar thông thường. Nó sẽ được đính kèm dưới dạng mã nguồn cho tệp xxxx-yy trong các thư viện
RobAu

1
@KanagaveluSugumar bạn cần thêm M2_REPO vào nhật thực, và sau đó chỉ cần làm mới dự án.
RobAu

36

Nếu một dự án tạo ra một lọ các nguồn dự án và triển khai nó vào một kho lưu trữ, thì bạn sẽ tìm thấy nó :)

Chỉ cần FYI, các tạo phẩm nguồn thường được tạo bởi maven-source-plugin . Plugin này có thể gói các nguồn chính hoặc kiểm tra của dự án vào một kho lưu trữ jar và, như được giải thích trong Cấu hình Plugin Nguồn :

(...) Tệp jar được tạo sẽ được đặt tên theo giá trị của finalName"nguồn" cộng nếu đó là nguồn chính. Mặt khác, nó sẽ được finalNamecộng với "-test-nguồn" nếu đó là nguồn thử nghiệm.

Văn bản bổ sung đã được đưa ra để mô tả một tạo phẩm ("nguồn" hoặc "-test-nguồn" ở đây) được gọi là phân loại.

Để khai báo một phụ thuộc vào một tạo phẩm sử dụng trình phân loại, chỉ cần thêm <classifier>phần tử. Ví dụ:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

Lưu ý rằng bạn thường không làm điều này, hầu hết các IDE cung cấp hỗ trợ để tải xuống các nguồn (và / hoặc JavaDoc) từ tạo phẩm chính mà không tuyên bố rõ ràng sự phụ thuộc vào chúng.

Cuối cùng, cũng lưu ý rằng một số công cụ tìm kiếm kho lưu trữ cho phép tìm kiếm các tạo phẩm bằng cách sử dụng trình phân loại (ít nhất là Nexus thực hiện với tìm kiếm nâng cao). Xem tìm kiếm này cho ví dụ.


19

Để tải xuống một số nguồn hoặc javadoc cụ thể, chúng tôi cần bao gồm GroupIds - Giá trị được phân tách bằng dấu phẩy như được hiển thị bên dưới

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

Lưu ý rằng trình phân loại không được phân tách bằng dấu phẩy, để tải xuống javadoc, chúng ta cần chạy lệnh trên một lần nữa với trình phân loại là javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc

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 thông 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

18

Các ý tưởng maven Plugin cho IntelliJ Idea phép bạn xác định có hay không nguồn và java doc nên được giải quyết và tải về

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

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 thông 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

Plugin này đã nghỉ hưu
kiltek

14

Để tải xuống bất kỳ sử dụng tạo tác

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

Đối với các nguồn Groovy, điều này sẽ là

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

Đối với javadoc Groovy bạn sẽ sử dụng

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

Điều này đặt vật phẩm đã cho vào kho lưu trữ Maven cục bộ của bạn, tức là thường $HOME/.m2/repository.

dependency:sources chỉ cần tải xuống các nguồn phụ thuộc của dự án, không phải các nguồn bổ trợ cũng như các nguồn phụ thuộc được xác định bên trong các plugin.


12

bạn có thể tìm thấy thông tin trong câu hỏi liên quan này: 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ý
nếu bạn sử dụng plugin maven nhật thực sau đó sử dụng 'mvn eclipse: eclipse -DdoadSource = true'


Đây là giải pháp duy nhất làm việc cho tôi. Tôi đang sử dụng Kepler Eclipse. Vì điều này làm cho các tham chiếu thích hợp trong . Classpath . Giống như sau:
aspdeepak

<classpathentry kind = "var" path = "M2_REPO / redis / client / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / client / jedis / 2.6.0 / jedis-2.6.0 -source.jar ">
aspdeepak

Khi tôi theo dõi @ RobAu chỉ trả lời Tài liệu Hibernate được tải xuống từ repo, không phải Spring . Sau đó, tôi truy cập vào liên kết mà bạn đã cung cấp và theo dõi @ mrembisz và thực hiện các thay đổi đối với sở thích của Maven và hoạt động như một cơ duyên. Tôi nhận được Tài liệu mùa xuân . @Stefan De Boey Cảm ơn bạn đã chia sẻ điều này. +1.
OO7

9

nếu bạn đang sử dụng nhật thực, bạn cũng có thể mở Tùy chọn> Maven và chọn Tải xuống Nguồn tạo tác, điều này sẽ cho phép pom.xml nguyên vẹn và giữ các nguồn hoặc tài liệu java của bạn (nếu được chọn) chỉ để phát triển ngay tại vị trí máy của bạn ~ / .m2


7

Trong Nhật thực

  1. Nhấp chuột phải vào pom.xml
  2. Chọn Run As-> Maven generate-sources
    nó sẽ tạo nguồn theo mặc định trong thư mục .m2

Điều kiện tiên quyết:

Maven nên được cấu hình với Eclipse.


1
Trả lời một câu hỏi khác nhau. Câu hỏi này là về việc tải xuống các JAR nguồn không tạo ra chúng.
Stephen C

5

Trong nhật thực - bấm vào dự án sau đó:

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


Tôi đã bỏ chọn 'tải xuống các nguồn tạo tác' ở cài đặt nhật thực, vì vậy nó chỉ tải xuống bình. Nhưng sau đó, tôi đã thử sử dụng giải pháp này để tải nguồn, nó thất bại mà không có tin nhắn nào. Tôi đã xóa thư mục jar trong kho lưu trữ cục bộ maven và tải lại jar, sau đó jar nguồn đã tải xuống thành công. Tôi nghĩ điều này là do kho lưu trữ cục bộ của maven có jar, vì vậy tôi không thể sử dụng phương pháp này để tải nguồn.
thẳng thắn

4

Bạn có thể, nếu chúng được tải lên. Nói chung, chúng được gọi là "frameworkname-version-source (s)"


4

NetBeans, Nhấp chuột theo ngữ cảnh

Trong NetBeans 8 với dự án do Maven điều khiển, chỉ cần nhấp vào ngữ cảnh vào mục danh sách tệp jar của phụ thuộc mà bạn quan tâm. Chọn Download Sources. Đợi một lát và NetBeans sẽ tự động tải xuống và cài đặt mã nguồn, nếu có.

Tương tự như vậy, bạn có thể chọn Download Javadocđể cài đặt tài liệu cục bộ. Sau đó, bạn có thể nhấp vào ngữ cảnh một số mã trong trình soạn thảo và chọn xem JavaDoc.

Ảnh chụp màn hình của mục menu ngữ cảnh "Tải xuống nguồn" đang được chọn trong dự án NetBeans 8 do Maven điều khiển


3

Dựa trên việc xem bảng điều khiển Maven trong Eclipse (Kepler), các nguồn sẽ được tự động tải xuống cho một phụ thuộc Maven nếu bạn cố mở một lớp từ phụ thuộc Maven đã nói trong trình soạn thảo mà bạn chưa tải xuống các nguồn. Điều này rất hữu ích khi bạn không muốn lấy nguồn cho tất cả các phụ thuộc của mình, nhưng bạn không biết cái nào bạn muốn trước thời hạn (và bạn đang sử dụng Eclipse).

Tôi đã kết thúc bằng cách sử dụng phương pháp của @ GabrielRamierez , nhưng sẽ sử dụng phương pháp tiếp cận của @ PascalThivent trong tương lai.


2

Nếu bạn biết groupIdaritifactId , bạn có thể tạo url tải xuống như thế này.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback- classic /

và bạn sẽ nhận được một trang như thế này, chọn phiên bản bạn cần, chỉ cần tận hưởng nó! nhập mô tả hình ảnh ở đây

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


1

Tôi cũng đã sử dụng plugin nhật thực để đưa dự án vào không gian làm việc nhật thực. Vì tôi đã làm việc trong một dự án khác, tôi thấy rằng có thể làm việc với nhật thực nhưng không có plugin maven-eclipse. Điều đó làm cho nó dễ sử dụng hơn với các môi trường khác nhau và cho phép dễ dàng sử dụng maven hơn nhật thực. Và điều đó mà không thay đổi tệp pom.xml.

Vì vậy, tôi khuyên bạn nên tiếp cận Gabriel Gabrielirez.


0

Để gỡ lỗi, bạn cũng có thể sử dụng "Trình dịch ngược Java", chẳng hạn như: JAD và dịch ngược nguồn khi đang di chuyển (mặc dù nguồn được tạo không bao giờ giống với bản gốc). Sau đó cài đặt JAD làm plugin trong Eclipse hoặc IDE yêu thích của bạn.


0

Các kho lưu trữ của Maven cung cấp cách đơn giản để tải về các nguồn jar.

Tôi sẽ giải thích nó bằng cách sử dụng một bản trình diễn cho "spring-boot-actuator-autoconfigure".

  1. Truy cập kho lưu trữ của maven - https://mvnreposective.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. Trang liệt kê các phiên bản khác nhau. Nhấp chuột vào một cái mong muốn, giả sử, 2.1.6.RELEASE - https://mvnreposective.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. Trang này có liên kết "Xem tất cả" bên cạnh "Tệp". Nhấp vào nó - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. Trang liệt kê các tệp khác nhau, bao gồm một tệp cho các nguồn - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-nguồn.jar

Nếu không, bạn luôn có thể "git clone" repo từ github, nếu nó ở đó và lấy mã cụ thể.

Như được giải thích bởi những người khác, bạn có thể sử dụng "mvn phụ thuộc: nguồn" ra lệnh lấy và tạo jar nguồn cho phụ thuộc bạn đang sử dụng.

Lưu ý: Một số phụ thuộc sẽ không có nguồn.jar, vì những tệp này không chứa mã nguồn mà là tệp pom. ví dụ: spring-boot-starter-chấp hành . Như trong trường hợp này:

POM Starter là một tập hợp các mô tả phụ thuộc thuận tiện mà bạn có thể đưa vào ứng dụng của mình. Bạn nhận được một cửa cho tất cả các công nghệ liên quan đến mùa xuân và mà bạn cần, mà không cần phải tìm kiếm mã mẫu và sao chép vô số các mô tả phụ thuộc.

Tham khảo: Giới thiệu về Spring Boot Starters


0

Trong IntelliJ IDEA, bạn có thể tự động tải xuống các nguồn tạo tác trong khi nhập bằng cách bật tùy chọn Tự động tải xuống Nguồn:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

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


0

Nếu bạn muốn tìm tệp jar nguồn cho bất kỳ tạo phẩm nào theo cách thủ công, hãy truy cập vị trí kho lưu trữ maven cho tạo phẩm cụ thể và trong Tệp nhấp vào 'xem Tất cả'. Bạn có thể tìm thấy tập tin jar 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.