Einrichten der Maven-Abhängigkeit für SQL Server

122

Ich entwickle ein Portlet, über das ich im Ruhezustand auf die SQL Server-Datenbank zugreifen kann. Ich habe Maven-Abhängigkeiten dafür eingerichtet und versuche, den SQL Server-Connector auf dieselbe Weise herauszufinden, wie ich weiß, dass MySql ihn hat.

Trotzdem gibt meine Google-Suche nur MySQL an, wenn ich nach dem SQL Server-Connector suche. Was ist der richtige Maven-Abhängigkeitswert ?

mico
quelle
1
verwandt: stackoverflow.com/q/1074869/521799
Lukas Eder

Antworten:

213

Laden Sie die Treiber-JAR von dem von Olaf bereitgestellten Link herunter und fügen Sie sie Ihrem lokalen Maven-Repository mit hinzu.

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

Fügen Sie es dann Ihrem Projekt hinzu mit;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>
Stu.C.
quelle
13
In den Versionshinweisen für die aus Olafs Antwort verknüpfte Version heißt es, dass es sich um "Microsoft JDBC-Treiber 4.0 für SQL Server" handelt. Also würde ich "-Dversion = 4.0" in der MVN-Installation verwenden.
George Armhold
2
Ich bin auf ein Problem gestoßen
Alan B. Dee
4
sourceforge jtds ist Ihre Antwort
Junchen Liu
1
Sie können das Glas hier herunterladen: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
İsmail Yavuz
Würde das Herunterladen und Hinzufügen zum lokalen Maven-Repo nicht zu einer engen Kopplung mit der Entwicklungsmaschine führen, auf der Sie Ihre App aufbauen? Ich meine, wenn versucht wird, dasselbe Projekt auf einer anderen Maschine zu erstellen, wird das Glas im lokalen Repo nicht gefunden. Wäre es nicht gut, es dem Projekt hinzuzufügen, damit es auf VCS verfügbar ist?
Obaid Maroof
69

Antwort für das "neue" und "coole" Microsoft.

Ja, SQL Server-Treiber jetzt unter MIT-Lizenz

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

Antwort für das "alte" Microsoft:

Für meinen Anwendungsfall (Integrationstest) war es ausreichend, einen Systembereich für die Abhängigkeit des JDBC-Treibers als solchen zu verwenden:

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

Auf diese Weise konnte ich den JDBC-Treiber in die lokale Versionskontrolle versetzen. Es ist nicht erforderlich, dass jeder Entwickler die Inhalte manuell in seinen eigenen Repositorys einrichtet.

Ich habe mich von dieser Antwort auf eine andere Frage zum Stapelüberlauf inspirieren lassen und auch hier darüber gebloggt .

Lukas Eder
quelle
Wenn es möglich ist, denke ich, ist es besser, die JAR auf das lokale Maven-Repository (Nexus)
hochzuladen
@mcoolive: Es ist definitiv definitiv meistens besser. Aber manchmal ist es einfach einfacher (und immer noch angemessen), einen schnellen und schmutzigen Job zu machen.
Lukas Eder
Diese Antwort ist im Vergleich zu Touzerys aktualisierter Antwort veraltet.
Seliger Geek
1
@BlessedGeek: Nun, ich habe meine Antwort schon vor Touzery aktualisiert. Tatsächlich ist die Antwort von Touzery veralteter, da sie immer noch eine Bibliothek von sourceforge referenziert. Quellschmiede !!
Lukas Eder
1
@MikhailFedorov: Meine Lösung hat bei mir funktioniert. Fühlen Sie sich frei, Ihre eigene Antwort (oder sogar ein Frage / Antwort-Paar) hinzuzufügen, die zeigt, wie dies gelöst werden kann, wäre großartig für die Community.
Lukas Eder
16

Es gibt auch eine Alternative: Sie können den Open-Source-jTDS-Treiber für MS-SQL Server verwenden, der kompatibel ist, obwohl er nicht von Microsoft erstellt wurde. Für diesen Treiber gibt es ein Maven-Artefakt, das Sie verwenden können:

http://jtds.sourceforge.net/

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

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

UPDATE November 2016, Microsoft hat jetzt seinen MSSQL JDBC-Treiber auf Github veröffentlicht und ist jetzt auch auf Maven verfügbar:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Emmanuel Touzery
quelle
Für Java 1.6: Ich vermute, die höheren Versionen sind für 1.7 .. <dependency> <groupId> net.sourceforge.jtds </ groupId> <artifactId> jtds </ifactId> <version> 1.2.4 </ version> </ Abhängigkeit>
Roshan Khandelwal
2
Beachten Sie, dass es seit 2013 keine Veröffentlichungen von JTDS gab, so dass dies heutzutage möglicherweise ein schlechter Rat ist ...
Emmanuel Touzery
Der jtds-Treiber hatte Probleme mit ssl in Java 8 (gepatcht, aber nicht veröffentlicht), also wechselten wir um 10:12
Uhr
9

Ich glaube, Sie suchen nach dem Microsoft SQL Server JDBC-Treiber: http://msdn.microsoft.com/en-us/sqlserver/aa937724

Olaf
quelle
Ja, das ist der eine. Ich würde es gerne durch maven laden, daher war dies keine Antwort auf meine Frage. Also, das erste, das gibt, bekommt mein Häkchen für seine / ihre Antwort!
Mico
3
Anscheinend gibt es einige Meinungsverschiedenheiten zwischen Maven und Microsoft bezüglich der Lizenzierung und Weiterverteilung des JDBC-Treibers: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf
3

Seien Sie vorsichtig mit den obigen Antworten. sqljdbc4.jar wird nicht unter einer öffentlichen Lizenz vertrieben, weshalb es schwierig ist, es für Laufzeit und Verteilung in ein JAR aufzunehmen. Siehe meine Antwort unten für weitere Details und eine viel bessere Lösung. Ihr Leben wird viel einfacher als meins, sobald ich diese Antwort gefunden habe.

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

Nelda.techspiress
quelle
2

Selbst nach der Installation des SQL Server-JARs versuchte mein Maven, die Abhängigkeit aus dem Maven-Repository abzurufen. Ich habe dann meinem POM das Repository meines lokalen Computers zur Verfügung gestellt und es funktioniert danach einwandfrei ... könnte für jemanden hilfreich sein.

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

Es sieht so aus, als hätte Microsoft einige seiner Treiber für maven central veröffentlicht:

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