Menyiapkan ketergantungan maven untuk SQL Server

122

Saya mengembangkan portlet di mana saya memiliki akses Hibernate ke database SQL Server. Saya mengatur dependensi maven untuk itu dan mencoba mencari tahu konektor SQL Server dengan cara yang sama saya tahu MySql memilikinya.

Masih pencarian Google saya hanya memberikan Mysql jika saya mencari konektor SQL Server. Berapa nilai ketergantungan maven yang benar ?

mico
sumber
1
related: stackoverflow.com/q/1074869/521799
Lukas Eder

Jawaban:

213

Unduh JAR driver dari tautan yang disediakan oleh Olaf dan tambahkan ke repositori Maven lokal Anda dengan;

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

Kemudian tambahkan ke proyek Anda dengan;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>
Stu.C
sumber
13
Catatan rilis untuk versi yang ditautkan dari jawaban Olaf menyatakan bahwa "Microsoft JDBC Driver 4.0 untuk SQL Server". Jadi saya akan menggunakan "-Dversion = 4.0" di mvn install.
George Armhold
2
Saya mengalami masalah: "tidak ada POM di direktori ini" Solusi untuk itu dapat ditemukan di sini: stackoverflow.com/questions/16348459/…
Alan B. Dee
4
sourceforge jtds adalah jawaban Anda
Junchen Liu
1
Anda dapat mengunduh jar di sini: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
İsmail Yavuz
Akankah mengunduh dan menambahkannya ke repo maven lokal tidak mengarah pada hubungan yang erat dengan mesin pengembangan tempat Anda membuat aplikasi? Maksud saya, jika proyek yang sama dicoba untuk dibangun di mesin yang berbeda, itu tidak akan menemukan toples di repo lokal. Bukankah lebih baik menambahkannya ke proyek sehingga tersedia di VCS?
Obaid Maroof
69

Jawaban untuk Microsoft "baru" dan "keren".

Hore, driver SQL Server sekarang di bawah lisensi MIT aktif

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

Jawaban untuk Microsoft "lama":

Untuk kasus penggunaan saya (pengujian integrasi), cukup menggunakan cakupan sistem untuk ketergantungan driver JDBC seperti:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>3.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
    <optional>true</optional>
</dependency>

Dengan begitu, saya dapat menempatkan driver JDBC ke kontrol versi lokal. Tidak perlu setiap pengembang mengatur barang secara manual di repositori mereka sendiri.

Saya mengambil inspirasi dari jawaban ini untuk pertanyaan Stack Overflow lainnya dan saya juga membuat blog tentang itu di sini .

Lukas Eder
sumber
Jika memungkinkan, saya pikir lebih baik mengunggah JAR di repositori maven lokal (Nexus)
mcoolive
@mcoolive: Ini pasti lebih baik, kebanyakan. Namun terkadang, lebih mudah (dan masih sesuai) untuk melakukan pekerjaan yang cepat dan kotor.
Lukas Eder
Jawaban ini sudah ketinggalan zaman dibandingkan dengan jawaban terbaru Touzery.
Blessed Geek
1
@BlessedGeek: Ya, saya memperbarui jawaban saya bahkan sebelum Touzery. Faktanya, jawaban Touzery lebih ketinggalan jaman, karena masih merujuk perpustakaan dari sourceforge. sourceforge !!
Lukas Eder
1
@MikhailFedorov: Solusi saya berhasil untuk saya. Jangan ragu untuk menambahkan jawaban Anda sendiri (atau bahkan pertanyaan / jawaban) yang menunjukkan bagaimana menyelesaikan ini, akan sangat bagus untuk komunitas.
Lukas Eder
16

Ada juga alternatif: Anda dapat menggunakan driver jTDS open source untuk MS-SQL Server, yang kompatibel meskipun tidak dibuat oleh Microsoft. Untuk pengemudi itu, ada artefak maven yang bisa Anda gunakan:

http://jtds.sourceforge.net/

Dari http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds :

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

UPDATE nov 2016, Microsoft sekarang menerbitkan driver MSSQL JDBC di github dan juga tersedia di maven sekarang:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Emmanuel Touzery
sumber
Untuk Java 1.6: Saya menduga versi yang lebih tinggi adalah untuk 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ ketergantungan>
Roshan Khandelwal
2
perhatikan bahwa tidak ada rilis JTDS sejak 2013 jadi itu mungkin saran yang buruk saat ini ...
Emmanuel Touzery
Driver jtds mengalami masalah dengan ssl di java 8 (ditambal tetapi tidak dirilis) jadi kami beralih ke sqljdbc4
rychu
9

Saya yakin Anda sedang mencari driver JDBC Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724

Olaf
sumber
Ya, ini dia. Saya ingin memuatnya melalui maven, jadi ini sebenarnya bukan jawaban atas pertanyaan saya. Jadi, pemberian pertama yang akan menarik perhatian saya untuk jawabannya!
mico
3
Sepertinya ada beberapa ketidaksepakatan antara Maven dan orang-orang Microsoft mengenai lisensi dan redistribusi driver JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf
3

Berhati-hatilah dengan jawaban di atas. sqljdbc4.jar tidak didistribusikan dengan lisensi publik sehingga sulit untuk memasukkannya ke dalam jar untuk runtime dan distribusi. Lihat jawaban saya di bawah untuk lebih jelasnya dan solusi yang jauh lebih baik. Hidup Anda akan menjadi lebih mudah seperti hidup saya begitu saya menemukan jawaban ini.

https://stackoverflow.com/a/30111956/3368958

Nelda.techspiress
sumber
2

Bahkan setelah menginstal tabung sqlserver, pakar saya mencoba mengambil dependecy dari repositori maven. Saya kemudian, memberikan pom saya repositori mesin lokal saya dan berfungsi dengan baik setelah itu ... mungkin bisa membantu seseorang.

    <repository>
        <id>local</id>
        <name>local</name>
        <url>file://C:/Users/mywindows/.m2/repository</url>
    </repository>
Ashish
sumber
1

Sepertinya Microsoft telah menerbitkan beberapa driver mereka ke maven central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
andrew-g-za
sumber