SQL Server için maven bağımlılığını ayarlama


122

SQL Server veritabanına Hazırda Bekletme erişimine sahip olduğum bir portlet geliştiriyorum. Bunun için maven bağımlılıkları kurdum ve MySql'in sahip olduğunu bildiğim gibi SQL Server bağlayıcısını bulmaya çalıştım.

Yine de Google aramam, SQL Server bağlayıcı ararsam yalnızca Mysql veriyor. Doğru maven bağımlılık değeri nedir?


Yanıtlar:


213

JAR sürücüsünü Olaf tarafından sağlanan bağlantıdan indirin ve yerel Maven deponuza ekleyin ;

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

Daha sonra projenize ekleyin;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>

13
Olaf'ın cevabından bağlantılı sürüm için sürüm notları, bunun "SQL Server için Microsoft JDBC Sürücü 4.0" olduğunu belirtir. Bu yüzden mvn kurulumunda "-Dversion = 4.0" kullanacağım.
George Armhold

2
Bir sorunla karşılaştım: "bu dizinde POM yok" Bunun çözümü burada bulunabilir: stackoverflow.com/questions/16348459/…
Alan B. Dee

4
sourceforge jtds cevabınız
Junchen Liu

1
Kavanozu buradan indirebilirsiniz: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Ismail Yavuz

Bunu yerel maven deposuna indirip eklemek, uygulamanızı üzerinde oluşturduğunuz geliştirme makinesiyle sıkı bir bağlantıya yol açmaz mı? Yani aynı proje farklı bir makinede inşa edilmeye çalışılırsa kavanozu yerel depoda bulamaz. VCS'de mevcut olması için onu projeye eklemek iyi olmaz mıydı?
Obaid Maroof

69

"Yeni" ve "havalı" Microsoft'un cevabı.

Yay, SQL Server sürücüsü artık MIT lisansı altında

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

"Eski" Microsoft'un cevabı:

Kullanım durumum için (entegrasyon testi), JDBC sürücüsünün bağımlılığı için aşağıdaki gibi bir sistem kapsamı kullanmak yeterliydi:

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

Bu şekilde, JDBC sürücüsünü yerel sürüm kontrolüne koyabilirim. Her geliştiricinin kendi depolarında elle ayar yapmasına gerek yok.

Bu yanıttan başka bir Stack Overflow sorusuna ilham aldım ve ayrıca burada blog yazdım .


Mümkünse,
JAR'ı

@mcoolive: Çoğunlukla kesinlikle daha iyi. Ancak bazen, hızlı ve kirli bir işi yapmak sadece daha kolaydır (ve yine de uygundur).
Lukas Eder

Touzery'nin güncellenmiş cevabına kıyasla bu cevap eski.
Blessed Geek

1
@BlessedGeek: Cevabımı Touzery'den önce güncelledim. Aslında Touzery'nin cevabı daha modası geçmiş, çünkü hala sourceforge'dan bir kitaplığa atıfta bulunuyor. sourceforge !!
Lukas Eder

1
@MikhailFedorov: Çözümüm benim için çalıştı. Bunu nasıl çözeceğinizi gösteren kendi cevabınızı (hatta bir soru / cevap çifti) eklemekten çekinmeyin, topluluk için harika olur.
Lukas Eder

16

Bir alternatif de var: MS-SQL Server için Microsoft tarafından yapılmasa da uyumlu olan açık kaynaklı jTDS sürücüsünü kullanabilirsiniz. Bu sürücü için kullanabileceğiniz bir maven eseri var:

http://jtds.sourceforge.net/

Gönderen http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds :

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

GÜNCELLEME Kasım 2016, Microsoft şimdi MSSQL JDBC sürücüsünü github'da yayınladı ve şu anda maven'de de mevcut:

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

Java 1.6 için: Daha yüksek sürümlerin 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ için olduğunu tahmin ediyorum bağımlılık>
Roshan Khandelwal

2
2013 yılından bu yana JTDS sürümünün bulunmadığına dikkat edin, bu nedenle bugünlerde kötü bir tavsiye olabilir ...
Emmanuel Touzery

Jtds sürücüsünün java 8'de ssl ile ilgili sorunları vardı (yamalı ama yayınlanmadı), bu yüzden sqljdbc4
rychu'ya geçtik

9

Microsoft SQL Server JDBC sürücüsünü aradığınıza inanıyorum: http://msdn.microsoft.com/en-us/sqlserver/aa937724


Evet, bu o. Maven aracılığıyla yüklemek istiyorum, bu yüzden bu aslında sorumun cevabı değildi. Öyleyse, ilk vermesi onun cevabına kene kazandıracak!
mico

3
JDBC sürücüsünün lisanslanması ve yeniden dağıtılmasıyla ilgili olarak Maven ve Microsoft çalışanları arasında bazı anlaşmazlıklar var gibi görünüyor: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf

3

Yukarıdaki cevaplara dikkat edin. sqljdbc4.jar genel bir lisans altında dağıtılmadığından, çalışma zamanı ve dağıtım için bir kavanozun içine dahil etmek zordur. Daha fazla ayrıntı ve çok daha iyi bir çözüm için aşağıdaki cevabıma bakın. Bu cevabı bulduğumda hayatınız benimki gibi çok daha kolay olacak.

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


2

Sqlserver kavanozunu kurduktan sonra bile, maven'ım bağımlılığı maven deposundan almaya çalışıyordu. Daha sonra, yerel makinemin deposunu pomuma sağladım ve bundan sonra iyi çalışıyor ... birisi için yardımcı olabilir.

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


1

Görünüşe göre Microsoft bazı sürücülerini Maven Central'da yayınladı:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.