Jadi saya telah mencoba menambahkan ketergantungan file .jar lokal saya ke file build.gradle saya:
apply plugin: 'java'
sourceSets {
main {
java {
srcDir 'src/model'
}
}
}
dependencies {
runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
}
Dan Anda dapat melihat bahwa saya menambahkan file .jar ke folder direferensikan Library di sini: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries
Tetapi masalahnya adalah ketika saya menjalankan perintah: gradle build pada baris perintah saya mendapatkan kesalahan berikut:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Inilah seluruh repo saya: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
java
gradle
dependency-management
build.gradle
gradle-eclipse
Wang-Zhao-Liu QM
sumber
sumber
Jawaban:
Jika Anda benar-benar perlu mengambil .jar itu dari direktori lokal,
Tambahkan di sebelah gradel modul Anda (Bukan file gradle aplikasi):
Namun, sebagai standar .jar dalam repositori maven yang sebenarnya, mengapa Anda tidak mencoba ini?
sumber
gradle.build
file - Apa ini "file app gradle" dan "module gradle"?implementation(":gson:2.2.4")
tampaknya menjadi cara untuk melakukannya.Menurut dokumentasi , gunakan jalur relatif untuk ketergantungan stoples lokal sebagai berikut:
sumber
Anda juga bisa melakukan ini yang akan mencakup semua JAR di repositori lokal. Dengan cara ini Anda tidak perlu menentukannya setiap waktu.
sumber
Berikut ini berfungsi untuk saya:
Lihat Dokumentasi Gradle .
sumber
Anda dapat mencoba menggunakan repositori Maven lokal Anda untuk Gradle:
Pasang toples ke dalam repositori Maven lokal Anda:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Periksa apakah Anda telah memasang toples ke
~/.m2/
repositori Maven lokal AndaAktifkan repositori Maven lokal Anda di
build.gradle
file Anda :sumber
Jawaban yang diterima baik, namun, saya akan memerlukan berbagai konfigurasi perpustakaan dalam membangun multi-proyek Gradle saya untuk menggunakan perpustakaan Java pihak ketiga yang sama.
Menambahkan ' $ rootProject.projectDir ' ke elemen path ' dir ' di dalam penutupan ' allprojects ' saya berarti setiap sub-proyek mereferensikan direktori ' libs ' yang sama , dan bukan versi lokal ke sub-proyek itu:
EDIT oleh Quizzie: diubah "$ {rootProject.projectDir}" menjadi "$ rootProject.projectDir" (berfungsi dalam versi Gradle terbaru).
sumber
Solusi bagi mereka yang menggunakan Kotlin DSL
Solusi yang ditambahkan sejauh ini sangat bagus untuk OP, tetapi tidak dapat digunakan dengan Kotlin DSL tanpa terlebih dahulu menerjemahkannya. Berikut ini contoh bagaimana saya menambahkan .JAR lokal ke bangunan saya menggunakan Kotlin DSL:
Ingat bahwa jika Anda menggunakan Windows, garis miring terbalik Anda harus diloloskan:
Dan juga ingat bahwa tanda kutip harus berupa tanda kutip ganda, bukan tanda kutip tunggal.
Edit untuk 2020:
Pembaruan gradle telah usang
compile
dantestCompile
mendukungimplementation
dantestImplementation
. Jadi blok ketergantungan di atas akan terlihat seperti ini untuk versi Gradle saat ini:sumber
compile(project(":MyProject"))
:, di mana "MyProject" didefinisikan dalamsettings.gradle
file Anda dengan sesuatu sepertiinclude("MyProject")
.Cara sederhana untuk melakukan ini adalah
itu akan mengkompilasi semua file .jar di direktori libs Anda di App.
sumber
Saya tidak bisa mendapatkan saran di atas di https://stackoverflow.com/a/20956456/1019307 agar berfungsi. Ini berhasil bagi saya. Untuk file
secondstring-20030401.jar
yang saya simpan dilibs/
direktori di root proyek:sumber
Pertanyaan sudah dijawab secara terperinci. Saya masih ingin menambahkan sesuatu yang tampaknya sangat mengejutkan bagi saya:
Tugas "dependensi gradle" tidak mencantumkan dependensi file apa pun. Meskipun Anda mungkin berpikir begitu, karena mereka telah ditentukan di blok "dependensi" setelah semua ..
Jadi jangan mengandalkan output ini untuk memeriksa apakah file lib lokal yang Anda referensikan berfungsi dengan benar.
sumber
Solusi yang berhasil bagi saya adalah penggunaan fileTree di file build.gradle. Simpan .jar yang perlu ditambahkan sebagai dependensi di folder libs. Berikan kode di bawah ini di blok dependen di build.gradle:
sumber
Cara terbaik untuk melakukannya adalah menambahkan ini di file build.gradle Anda dan tekan opsi sinkronisasi
sumber
Anda dapat menambahkan toples:
Untuk gradle cukup masukkan kode berikut
build.gradle
:dan untuk pakar saja ikuti langkah-langkah:
Untuk Intellij: File-> struktur proyek-> modul-> dependensi tab-> klik + tanda-> jar dan dependensi-> pilih guci yang ingin Anda impor-> ok-> terapkan (jika terlihat) -> ok
Ingatlah bahwa jika Anda mendapatkan
java.lang.NoClassDefFoundError: Could not initialize class
pengecualian pada saat runtime, ini berarti bahwa dependensi dalam jar tidak diinstal untuk itu Anda harus menambahkan semua dependecies di proyek induk.sumber
File Goto -> Struktur Proyek -> Modul -> aplikasi -> Tab Dependensi -> Klik + (tombol) -> Pilih Ketergantungan File -> Pilih file jar di folder lib
Langkah-langkah ini secara otomatis akan menambah ketergantungan Anda ke gralde
Sangat sederhana
sumber
build.gradle
.Hati-hati jika Anda menggunakan integrasi berkelanjutan, Anda harus menambahkan perpustakaan di jalur yang sama di server build Anda.
Untuk alasan ini, saya lebih suka menambahkan toples ke repositori lokal dan, tentu saja, melakukan hal yang sama pada server build.
sumber
Cara lain:
Tambahkan perpustakaan di tampilan bagan. Klik kanan yang ini. Pilih menu "Tambah Sebagai Perpustakaan". Sebuah dialog muncul, biarkan Anda memilih modul. OK dan sudah selesai.
sumber