Saya ingin menambahkan driver jdbc oracle ke proyek saya sebagai dependensi (lingkup runtime) - ojdbc14. Di situs MVNrepository ketergantungan untuk dimasukkan ke dalam POM adalah:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
tentu saja ini tidak berfungsi karena tidak ada di repositori pusat yang digunakan oleh pakar. 2 pertanyaan:
Bagaimana cara menemukan repositori (jika ada) yang berisi artefak ini?
Bagaimana saya menambahkannya sehingga Maven akan menggunakannya?
Jawaban:
Bagaimana cara menemukan repositori (jika ada) yang berisi artefak ini?
Sayangnya karena lisensi biner tidak ada repositori publik dengan Oracle Driver JAR. Ini terjadi dengan banyak ketergantungan tetapi bukan kesalahan Maven. Jika Anda menemukan repositori publik yang berisi JAR, Anda bisa yakin itu ilegal.
Bagaimana saya menambahkannya sehingga Maven akan menggunakannya?
Beberapa JAR yang tidak dapat ditambahkan karena alasan lisensi memiliki entri pom di repo Maven Central . Lihat saja, ini berisi info Maven yang disukai vendor:
... dan URL untuk mengunduh file yang dalam hal ini adalah http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .
Setelah Anda mengunduh JAR, tambahkan saja ke repositori komputer Anda dengan (catatan saya menarik groupId, artifactId, dan versi dari POM):
Parameter terakhir untuk menghasilkan POM akan menyelamatkan Anda dari peringatan pom.xml
Jika tim Anda memiliki repositori Maven lokal, panduan ini mungkin berguna untuk mengunggah JAR di sana.
sumber
Untuk alasan apa pun, saya tidak bisa mendapatkan solusi di atas untuk bekerja. (Masih tidak bisa.)
Sebaliknya yang saya lakukan adalah memasukkan toples ke dalam proyek saya (blech) dan kemudian membuat ketergantungan "sistem" untuknya yang menunjukkan jalur ke toples. Ini mungkin bukan cara yang BENAR untuk melakukannya, tetapi itu berhasil. Dan itu menghilangkan kebutuhan untuk pengembang lain di tim (atau orang yang menyiapkan server build) untuk menempatkan toples di repositori lokal mereka.
UPDATE : Solusi ini berfungsi untuk saya ketika saya menjalankan Alat Hibernate. Tampaknya TIDAK berfungsi untuk membuat file PERANG. Itu tidak termasuk file ojdbc6.jar dalam file PERANG target.
1) Buat direktori bernama "lib" di root proyek Anda.
2) Salin file ojdbc6.jar di sana (apa pun wadahnya disebut.)
3) Buat ketergantungan yang terlihat seperti ini:
Jelek, tapi bekerja untukku.
Untuk memasukkan file dalam file perang tambahkan berikut ini ke pom Anda
sumber
Oracle JDBC Driver sekarang tersedia di Oracle Maven Repository (bukan di Central).
Oracle Maven Repository memerlukan pendaftaran pengguna. Instruksi dapat ditemukan di:
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Perbarui 2019-10-03
Saya perhatikan Spring Boot sekarang menggunakan Driver Oracle JDBC dari Maven Central .
Untuk pengguna Gradle, gunakan:
Tidak perlu registrasi pengguna.
Perbarui 2020-03-02
Oracle sekarang menerbitkan driver di bawah id grup com.oracle.database. Lihat jawaban Anthony Accioly untuk informasi lebih lanjut. Terima kasih Anthony.
Oracle JDBC Driver kompatibel dengan JDK6, JDK7, dan JDK8
Oracle JDBC Driver kompatibel dengan JDK8, JDK9, dan JDK11
Oracle JDBC Driver kompatibel dengan JDK10 dan JDK11
sumber
Unduh toples dan letakkan di proyek Anda
src/lib
. Sekarang Anda dapat menggunakan plugin installer maven.Sekarang Anda hanya perlu menjalankan
mvn clean
satu kali dan lib oracle diinstal di repositori pakar lokal Anda.sumber
Oracle sekarang mengekspos repositori maven di maven.oracle.com Namun Anda harus diautentikasi.
Lihat https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle
Menurut komentar di posting blog driver ojdbc harus tersedia di koordinat berikut:
sumber
Coba dengan:
sumber
1. Bagaimana cara menemukan repositori (jika ada) yang berisi artefak ini?
Seperti yang telah dikomentari oleh DavidS , baris yang saya kutip pada saat saya menjawab tidak ada lagi pada saat ini (saat ini saya sedang menulis sekarang) Perjanjian Perjanjian Lisensi OTN yang saya tautkan. Pertimbangkan jawaban ini hanya untuk versi artefak yang lebih lama, seperti 10.2.0.3.0 dan sejenisnya.
Semua Oracle Database JDBC Drivers terdistribusi berdasarkan Perjanjian Lisensi OTN .
Jika Anda membaca Perjanjian Lisensi OTN Anda menemukan istilah lisensi ini:
jadi itu sebabnya Anda tidak dapat menemukan toples pengemudi di Repositori Maven publik apa pun, karena itu akan dibagikan sendiri, dan jika itu terjadi maka itu akan menjadi pelanggaran lisensi.
Menambahkan ketergantungan:
(atau versi yang lebih baru) menjadikan Maven
ojdbc14-10.2.0.3.0.pom
hanya unduhan , dan di pom itu Anda dapat membaca:yang memberi tahu Anda tentang Lisensi OTN.
2. Bagaimana saya menambahkannya sehingga Maven akan menggunakannya?
Untuk membuat dependensi di atas berfungsi, saya setuju dengan victor hugo yang menyarankan Anda di sini untuk secara manual memasang toples ke dalam repositori Maven lokal Anda (
.m2
direktori) dengan menjalankan:tetapi saya ingin menambahkan bahwa ketentuan lisensi di atas tidak hanya membatasi di mana Anda tidak dapat menemukan tabung JDBC, tetapi juga membatasi tempat Anda menginstalnya!
Bahkan repositori Maven lokal Anda harus pribadi dan tidak dibagikan karena jika dibagikan itu akan menjadi semacam distribusi di mana toples didistribusikan sendirian, bahkan jika untuk sekelompok kecil orang ke dalam jaringan area lokal Anda, dan ini mewakili Pelanggaran Perjanjian Lisensi OTN .
Selain itu saya pikir Anda harus menghindari memasang toples JDBC di manajer repositori perusahaan Anda (seperti Artifactory atau Nexus ) sebagai artefak tunggal karena jika dipasang itu akan tetap didistribusikan sendirian, bahkan jika hanya untuk orang-orang di organisasi Anda saja, dan ini mewakili sebuah pelanggaran Perjanjian Lisensi OTN .
sumber
Anda dapat menggunakan Nexus untuk mengelola dependensi pihak ketiga serta dependensi dalam repositori standar.
sumber
Hingga saat ini, tidak mungkin menggunakan repositori pakar. Saya menggunakan ivy sebagai alat manajemen ketergantungan, tetapi juga menggunakan repositori ibiblio maven2. Dan ini bekerja untuk ivy:
Ketergantungan Maven2 bisa seperti itu:
Perhatikan bahwa saya mendefinisikan http://download.java.net/maven/2/ dan http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [organisasi] / [modul] / [ revisi] / [artefak] - [revisi]. [ext] sebagai maven2 eksternal repos pada pengaturan ivy saya.
sumber
http://maven.ibiblio.org/maven/oracle
jugahttp://maven.ibiblio.org/maven/com.oracle
.Pada hari ini (27 Februari 2020) Oracle mengumumkan telah menerbitkan semua pustaka klien JDBC dari versi 11.2.0.4 (misalnya ojdbc6) hingga 19.3.0 (misalnya ojdbc10) di Maven Central di bawah id grup. comacle.atacle.database :
Contoh:
sumber
Driver Oracle JDBC sekarang tersedia di Maven Central . Ini tautannya:
Oracle JDBC Drivers - Maven Central
Artikel pengembang Oracle mengumumkan ketersediaan driver Oracle JDBC di Maven Central:
Pengumuman Oracle - Driver Oracle JDBC tersedia di Maven Central
Contoh:
sumber
Berita baik semuanya! Akhirnya kita dapat menggunakan repo resmi Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
sumber
Beberapa Produk Oracle mendukung penerbitan artefak pakar ke repositori lokal. Produk memiliki direktori plugin / pakar yang berisi deskripsi di mana menemukan artefak dan tempat menyimpannya. Ada Plugin dari Oracle yang benar-benar akan melakukan pengunggahan.
Lihat: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm
Salah satu produk yang dapat mengirimkan OJDBC dengan cara ini adalah WLS, namun menggunakan koordinat yang cukup aneh:
sumber
Saya mengirimkan opensource di bawah LGPLv2 dan bahkan setelah beberapa percakapan email dengan Oracle, mereka tidak jelas apakah saya diizinkan untuk mengirim driver JDBC biner mereka dengan distribusi saya. Masalah terkait dengan apakah lisensi saya kompatibel dengan persyaratan OTN mereka sehingga mereka menyarankan saya tidak diizinkan untuk mengirim pengemudi. Agaknya terkait dengan bagian ini
Jadi, bahkan jika Anda berhasil menerbitkan driver secara legal di repositori maven eksklusif / lokal Anda masih ada batasan pada apa yang Anda boleh lakukan dengan artefak itu. Tampaknya tidak masuk akal bahwa bahkan jika saya mengirim driver mereka dalam bentuk biner bersama dengan file lisensi OTN lengkap, saya masih tidak dapat menggunakannya dan harus memaksa pengguna saya untuk mengunduh driver Oracle secara manual dan masuk ke jalur perpustakaan saya sebelum mereka dapat menggunakan perangkat lunak saya.
sumber
Ada satu repo yang menyediakan toples. Dalam SBT, tambahkan resolver yang serupa dengan ini: "oracle driver repo" di " http://dist.codehaus.org/mule/dependencies/maven2 "
dan ketergantungan: "oracle"% "ojdbc14"% "10.2.0.2"
Anda dapat melakukan hal yang sama dengan pakar. pom.xml dan toples tersedia ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).
sumber
Jika Anda menggunakan Netbeans, goto Dependencies dan instal artefak secara manual. Temukan file .jar yang Anda unduh dan selesai. build bersih akan menyelesaikan masalah.
sumber
Anda dapat menemukan contoh proyek Github sederhana untuk menggunakan Driver Oracle JDBC di Maven Project di sini .
Anda dapat menemukan semua penjelasan untuk integrasi berkelanjutan Anda + sampel dan berjalan di Travis-CI.
DEMO
sumber
Untuk ketergantungan
Mencoba
sumber
Dalam kasus saya ini berfungsi untuk saya setelah menambahkan ketergantungan versi di bawah ini (10.2.0.4). Setelah menambahkan versi ini 10.2.0.3.0 tidak berfungsi karena file .jar tidak tersedia di jalur repositori.
sumber
Silakan coba di bawah ini:
sumber
Ini bekerja untuk saya seperti pesona. Saya telah melalui banyak cara tetapi kemudian ini membantu saya. Pastikan Anda mengikuti setiap langkah dan beri nama file XML yang sama persis .
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Prosesnya sedikit membosankan tapi ya itu berhasil.
sumber
TERPECAHKAN
Repositori ini perlu diaktifkan untuk menemukan Oracle 10.0.3.0 dependecies (pengaturan ini perlu dilakukan di Buildconfig.groovy grails.project.dependency.resolver = "ivy" // atau ivy
Juga gunakan pengaturan berikut untuk waktu kompilasi unduhan driver Oracle
runtime "com.oracle:ojdbc:10.2.0.3.0"
Ini akan menyelesaikan masalah Anda karena tidak menemukan driver Oracle untuk aplikasi grails
sumber