Adakah yang tahu jika Anda dapat menemukan sumber JAR di repositori Maven?
Adakah yang tahu jika Anda dapat menemukan sumber JAR di repositori Maven?
Jawaban:
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
mvn dependency:resolve -Dclassifier=javadoc
IntelliJ IDEA secara otomatis memperhatikan javadocs, yang sangat bagus.
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>
mvn eclipse:eclipse
jika Anda menambahkan ini ke file POM?
M2_REPO
sebagai xxxx-yy-sources.jar, di lokasi yang sama dengan tabung normal. Ini akan dilampirkan sebagai kode sumber untuk tabung xxxx-yy di perpustakaan
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
finalName
tambah "-sumber" jika itu adalah sumber utama. Kalau tidak, itu akan menjadifinalName
plus "-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.
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
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
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.
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'
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
Dalam Eclipse
pom.xml
Run As
-> Maven generate-sources
Prasyarat:
Maven harus dikonfigurasi dengan Eclipse.
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 Javadoc
untuk menginstal dokumen secara lokal. Kemudian Anda dapat mengklik konteks beberapa kode di editor dan memilih untuk melihat JavaDoc.
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.
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!
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.
Repositori Maven memang menyediakan cara sederhana untuk mengunduh toples sumber.
Saya akan menjelaskannya menggunakan demonstrasi untuk "spring-boot-actuator-autoconfigure".
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
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.