Dapatkan JAR sumber dari repositori Maven

Jawaban:

785

Maven Micro-Tip: Dapatkan sumber dan Javadocs

Saat Anda menggunakan Maven dalam IDE, Anda sering menemukan kebutuhan untuk IDE Anda untuk menyelesaikan kode sumber dan Javadocs untuk dependensi library Anda. Ada cara mudah untuk mencapai tujuan itu.

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

Perintah pertama akan mencoba mengunduh kode sumber untuk setiap dependensi dalam file pom Anda.

Perintah kedua akan mencoba mengunduh Javadocs.

Maven ada di tangan para pembuat paket perpustakaan di sini. Jadi beberapa dari mereka tidak akan memiliki paket kode sumber dan banyak dari mereka tidak memiliki Javadocs.

Jika Anda memiliki banyak dependensi, mungkin juga merupakan ide yang baik untuk menggunakan inklusi / pengecualian untuk mendapatkan artefak tertentu, perintah berikut akan misalnya hanya mengunduh sumber untuk dependensi dengan artifactId tertentu:

mvn dependency:sources -DincludeArtifactIds=guava

Sumber: http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

Dokumentasi: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html

Alain O'Dea
sumber
10
Di mana menempatkannya setelah diunduh?
James Moore
15
Itu menempatkan mereka di direktori yang sama dengan JAR biner di bawah M2_HOME.
Alain O'Dea
19
Jika Anda menggunakan eclipse, mungkin juga bermanfaat untuk melakukan "mvn eclipse: eclipse" sesudahnya dan kemudian menyegarkan proyek Anda di eclipse - menyelamatkan Anda dari melampirkan sumber secara manual ke setiap file.
unigeek
1
Saya tidak dapat menemukan sumber dan javadocs setelah diunduh. Saya telah memeriksa setiap direktori di bawah M2_HOME
Patrick Kiernan
2
Setelah mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA secara otomatis memperhatikan javadocs, yang sangat bagus.
Jonik
89

Mengkonfigurasi dan menjalankan plugin maven-eclipse, (misalnya dari baris perintah 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>
RobAu
sumber
Apa maksudmu? Apakah maksud Anda bahwa sumber dan dokumen diunduh saat Anda menjalankannya mvn eclipse:eclipsejika Anda menambahkan ini ke file POM?
Lii
3
Iya. Sederhana seperti itu.
RobAu
@RobAu, di mana sumbernya akan diunduh, apakah itu akan dilampirkan ke proyek itu sendiri atau di tempat lain?
Jaskey
1
Ini akan diunduh sebagai tabung di Anda M2_REPOsebagai xxxx-yy-sources.jar, di lokasi yang sama dengan tabung normal. Ini akan dilampirkan sebagai kode sumber untuk tabung xxxx-yy di perpustakaan
RobAu
1
@ KanagaveluSugumar Anda perlu menambahkan M2_REPO ke gerhana, dan kemudian menyegarkan kembali proyek.
RobAu
36

Jika suatu proyek membuat toples dari sumber proyek dan menyebarkannya ke repositori pakar, maka Anda akan menemukannya :)

Hanya FYI, artefak sumber umumnya dibuat oleh maven-source-plugin . Plugin ini dapat membundel sumber utama atau menguji suatu proyek ke dalam tabung jar dan, seperti yang dijelaskan dalam Mengkonfigurasi Sumber Plugin :

(...) File jar yang dihasilkan akan dinamai dengan nilai finalNametambah "-sumber" jika itu adalah sumber utama. Kalau tidak, itu akan menjadi finalNameplus "-test-sources" jika itu adalah sumber tes.

Teks tambahan diberikan untuk menggambarkan artefak ("-sumber" atau "-test-sources" di sini) disebut classifier.

Untuk mendeklarasikan ketergantungan pada artefak yang menggunakan classifier, cukup tambahkan <classifier>elemen. Sebagai contoh:

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

Perhatikan bahwa Anda biasanya tidak melakukan ini, sebagian besar IDE memberikan dukungan untuk mengunduh sumber (dan / atau JavaDoc) dari artefak utama tanpa menyatakan secara eksplisit ketergantungan pada sumber tersebut.

Terakhir, perhatikan juga bahwa beberapa mesin pencari repositori memungkinkan pencarian artefak menggunakan penggolong (setidaknya Nexus tidak dengan pencarian lanjutan). Lihat pencarian ini misalnya.

Thivent Pascal
sumber
18

The Ide Plugin maven untuk IntelliJ Idea memungkinkan Anda untuk menentukan apakah atau tidak sumber dan java doc harus diselesaikan dan di-download

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true
dev_doctor
sumber
Alih-alih mengunduh sumber untuk semua dependensi, mungkinkah mengunduh hanya untuk beberapa dependensi dengan menentukannya dalam pom bersama dengan dependensi itu sendiri, dapatkah b melalui tag dalam pada tag dependensi atau yang serupa?
nanosoft
Plugin ini sudah Pensiun
kiltek
18

Untuk mengunduh beberapa sumber atau javadoc tertentu, kita perlu memasukkan GroupIds - ini adalah nilai yang dipisahkan koma seperti yang ditunjukkan di bawah ini

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

Perhatikan bahwa classifier tidak dipisahkan koma, untuk mengunduh javadoc kita perlu menjalankan perintah di atas sekali lagi dengan classifier sebagai javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc
Anver Sadhat
sumber
Alih-alih mengunduh sumber untuk semua dependensi, mungkinkah mengunduh hanya untuk beberapa dependensi dengan menentukannya dalam pom bersama dengan dependensi itu sendiri, dapatkah b melalui tag dalam pada tag dependensi atau yang serupa?
nanosoft
14

Untuk mengunduh penggunaan artefak

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

Untuk sumber-sumber Groovy ini akan menjadi

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

Untuk javadoc Groovy yang akan Anda gunakan

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

Ini menempatkan artefak yang diberikan ke repositori Maven lokal Anda, yaitu biasanya $HOME/.m2/repository.

dependency:sources hanya mengunduh sumber dependensi proyek, bukan sumber plugin atau sumber dependensi yang ditentukan di dalam plugin.

Nyonya
sumber
12

Anda dapat menemukan info di pertanyaan terkait ini: Dapatkan file jar sumber yang dilampirkan ke Eclipse untuk dependensi yang dikelola Maven
jika Anda menggunakan plugin gerhana lalu gunakan 'mvn gerhana: eclipse -DdownloadSources = true'

Stefan De Boey
sumber
Ini adalah satu-satunya solusi yang berhasil untuk saya. Saya menggunakan Eclipse Kepler. Karena ini membuat referensi yang tepat di .classpath . Seperti yang berikut ini:
aspdeepak
<classpathentry kind = "var" path = "M2_REPO / redis / klien / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / klien / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak
Ketika saya mengikuti @ RobAu menjawab hanya Hibernate Docs yang diunduh dari repo, bukan Spring . Kemudian saya mengunjungi tautan yang Anda berikan & ikuti @ mrembisz & buat perubahan pada preferensi Maven & berfungsi seperti pesona. Saya mendapatkan Spring Documents . @Stefan De Boey Terima kasih telah berbagi ini. +1.
OO7
9

jika Anda menggunakan eclipse, Anda juga bisa membuka Preferensi> Maven dan pilih Unduh Sumber Artefak, ini akan membiarkan pom.xml tetap utuh dan menjaga sumber atau dokumen java (jika dipilih) hanya untuk pengembangan tepat di lokasi mesin Anda ~ / .m2

Gabriel Ramirez
sumber
7

Dalam Eclipse

  1. Klik kanan pada pom.xml
  2. Pilih Run As-> Maven generate-sources
    maka akan menghasilkan sumber secara default di folder .m2

Prasyarat:

Maven harus dikonfigurasi dengan Eclipse.

bondkn
sumber
1
Menjawab pertanyaan yang berbeda. Pertanyaan ini adalah tentang mengunduh JAR sumber yang tidak menghasilkannya.
Stephen C
5

Dalam eclipse - klik pada proyek itu:

masukkan deskripsi gambar di sini.

Witold Kaczurba
sumber
Saya menghapus centang 'unduh sumber artefak' di pengaturan gerhana, sehingga hanya mengunduh toples. Tetapi yang terakhir, saya mencoba menggunakan solusi ini untuk mengunduh sumber, gagal tanpa pesan apa pun. Saya menghapus folder toples di repositori lokal maven dan mengunduh toples lagi, kemudian toples sumber berhasil diunduh. Saya pikir ini karena repositori maven lokal memiliki toples, jadi saya tidak dapat menggunakan metode ini untuk mengunduh sumbernya.
jujur
4

Anda dapat, jika diunggah. Umumnya mereka disebut "frameworkname-version-source (s)"

Bozho
sumber
4

NetBeans, Klik-Konteks

Di NetBeans 8 dengan proyek berbasis Maven, hanya klik konteks pada item daftar file jar dari ketergantungan yang Anda minati. MemilihDownload Sources . Tunggu sebentar dan NetBeans akan secara otomatis mengunduh dan menginstal kode sumber, jika tersedia.

Anda juga dapat memilih Download Javadocuntuk menginstal dokumen secara lokal. Kemudian Anda dapat mengklik konteks beberapa kode di editor dan memilih untuk melihat JavaDoc.

tangkapan layar item menu konteks "Unduh Sumber" dipilih dalam proyek NetBeans 8 yang dikendarai oleh Maven

Basil Bourque
sumber
3

Berdasarkan menonton konsol Maven di Eclipse (Kepler), sumber akan secara otomatis diunduh untuk ketergantungan Maven jika Anda mencoba untuk membuka kelas dari kata ketergantungan Maven di editor yang sumbernya belum Anda unduh. Ini berguna ketika Anda tidak ingin mengambil sumber untuk semua dependensi Anda, tetapi Anda tidak tahu mana yang Anda inginkan sebelumnya (dan Anda menggunakan Eclipse).

Saya akhirnya menggunakan pendekatan @ GabrielRamierez , tetapi akan menggunakan pendekatan @ PascalThivent untuk maju.

eebbesen
sumber
2

Jika Anda mengetahui groupId dan aritifactId , Anda dapat membuat url unduhan seperti ini.

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

dan Anda akan mendapatkan halaman seperti ini, pilih versi yang Anda butuhkan, nikmati saja! masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

senninha
sumber
1

Saya juga menggunakan plugin gerhana untuk mendapatkan proyek ke ruang kerja gerhana. Karena saya telah bekerja pada proyek yang berbeda saya melihat bahwa adalah mungkin untuk bekerja dengan gerhana tetapi tanpa plugin maven-eclipse. Itu membuatnya lebih mudah untuk digunakan dengan lingkungan yang berbeda dan memungkinkan penggunaan yang mudah dari pakar gerhana. Dan itu tanpa mengubah file pom.xml.

Jadi, saya merekomendasikan pendekatan Gabriel Ramirez.

eeezyy
sumber
0

Untuk debugging Anda juga dapat menggunakan "Java Decompiler" seperti: JAD dan mendekompilasi sumber dengan cepat (walaupun sumber yang dihasilkan tidak pernah sama dengan aslinya). Kemudian instal JAD sebagai plugin di Eclipse atau IDE favorit Anda.

atom88
sumber
0

Repositori Maven memang menyediakan cara sederhana untuk mengunduh toples sumber.

Saya akan menjelaskannya menggunakan demonstrasi untuk "spring-boot-actuator-autoconfigure".

  1. Pergi ke repositori maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. Halaman ini berisi daftar berbagai versi. Klik untuk yang diinginkan, katakanlah, 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. Halaman ini memiliki tautan "Lihat Semua" di sebelah "File". Klik - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. Halaman ini berisi daftar berbagai file termasuk satu untuk sumber - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

Jika tidak, Anda selalu dapat "git klon" repo dari github, jika ada dan dapatkan kode tertentu.

Seperti yang dijelaskan oleh orang lain, Anda dapat menggunakan perintah "mvn dependency: sources" perintah get dan generate sources jar untuk dependensi yang Anda gunakan.

Catatan: Beberapa dependensi tidak akan memiliki sources.jar, karena tidak mengandung kode sumber selain file pom. misalnya spring-boot-starter-actuator . Seperti dalam kasus ini:

POM pemula adalah sekumpulan deskriptor ketergantungan yang nyaman yang dapat Anda sertakan dalam aplikasi Anda. Anda mendapatkan toko serba ada untuk semua Pegas dan teknologi terkait yang Anda butuhkan, tanpa harus menelusuri kode sampel dan menyalin banyak penjelas ketergantungan dependensi.

Referensi: Pengantar Pemula Boot Musim Semi

Manojkumar Khotele
sumber
0

Di IntelliJ IDEA Anda dapat mengunduh sumber artefak secara otomatis saat mengimpor dengan mengaktifkan opsi Sumber unduhan secara otomatis:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

masukkan deskripsi gambar di sini

Saikat
sumber
0

Jika Anda ingin menemukan file jar sumber untuk artefak mana pun secara manual, buka lokasi penyimpanan pakar untuk artefak tertentu dan di dalam File klik 'lihat Semua'. Anda dapat menemukan file jar sumber.

Naresh Muthyala
sumber