Configurazione della dipendenza Maven per SQL Server


122

Sto sviluppando un portlet in cui ho accesso Hibernate al database di SQL Server. Ho impostato le dipendenze Maven per questo e cerco di scoprire il connettore di SQL Server nello stesso modo in cui so che MySql lo ha.

Ancora la mia ricerca su Google dà solo Mysql se cerco il connettore di SQL Server. Qual è il giusto valore di dipendenza Maven ?


Risposte:


213

Scarica il JAR del driver dal collegamento fornito da Olaf e aggiungilo al tuo repository Maven locale con;

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

Quindi aggiungilo al tuo progetto con;

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

13
Le note di rilascio per la versione collegata dalla risposta di Olaf affermano che si tratta di "Microsoft JDBC Driver 4.0 per SQL Server". Quindi userei "-Dversion = 4.0" nell'installazione mvn.
George Armhold

2
Ho riscontrato un problema: "nessun POM in questa directory" La soluzione può essere trovata qui: stackoverflow.com/questions/16348459/…
Alan B. Dee

4
sourceforge jtds è la tua risposta
Junchen Liu


Il download e l'aggiunta al repository Maven locale non porterebbero a uno stretto accoppiamento con la macchina di sviluppo su cui stai creando la tua app? Voglio dire, se si prova a costruire lo stesso progetto su una macchina diversa, non troverà il jar nel repository locale. Non sarebbe bene aggiungerlo al progetto in modo che sia disponibile su VCS?
Obaid Maroof

69

Risposta per il "nuovo" e "fantastico" Microsoft.

Sì, driver di SQL Server ora con licenza MIT su

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

Risposta per il "vecchio" Microsoft:

Per il mio caso d'uso (test di integrazione) è stato sufficiente utilizzare un ambito di sistema per la dipendenza del driver JDBC in quanto tale:

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

In questo modo, potrei mettere il driver JDBC nel controllo della versione locale. Non è necessario che ogni sviluppatore configuri manualmente le cose nei propri repository.

Ho preso ispirazione da questa risposta a un'altra domanda di Stack Overflow e ne ho anche scritto sul blog qui .


Se è possibile, penso sia meglio caricare il JAR sul repository locale di maven (Nexus)
mcoolive

@mcoolive: è decisamente meglio, soprattutto. Ma a volte è più semplice (e comunque appropriato) fare un lavoro veloce e sporco.
Lukas Eder

Questa risposta è obsoleta rispetto alla risposta aggiornata di Touzery.
Blessed Geek

1
@BlessedGeek: Beh, ho aggiornato la mia risposta anche prima di Touzery. In effetti, la risposta di Touzery è più obsoleta, perché fa ancora riferimento a una libreria di sourceforge. sourceforge !!
Lukas Eder

1
@MikhailFedorov: La mia soluzione ha funzionato per me. Sentiti libero di aggiungere la tua risposta (o anche una coppia domanda / risposta) che mostra come risolvere questo problema, sarebbe fantastico per la comunità.
Lukas Eder

16

C'è anche un'alternativa: potresti usare il driver jTDS open source per MS-SQL Server, che è compatibile anche se non prodotto da Microsoft. Per quel driver, c'è un artefatto esperto che puoi usare:

http://jtds.sourceforge.net/

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

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

AGGIORNAMENTO novembre 2016, Microsoft ha ora pubblicato il suo driver JDBC MSSQL su GitHub ed è ora disponibile anche su Maven:

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

Per Java 1.6: immagino che le versioni superiori siano per 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ dipendenza>
Roshan Khandelwal

2
nota che non ci sono state versioni di JTDS dal 2013, quindi questo potrebbe essere un cattivo consiglio al giorno d'oggi ...
Emmanuel Touzery

Il driver jtds ha avuto problemi con ssl in java 8 (patchato ma non rilasciato) quindi siamo passati a sqljdbc4
rychu

9

Credo che tu stia cercando il driver JDBC di Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724


Sì, questo è quello. Vorrei caricarlo tramite Maven, quindi questa non era effettivamente la risposta alla mia domanda. Quindi, il primo a dare che otterrà il mio segno di spunta per la sua risposta!
mico

3
Sembra che ci siano alcuni disaccordi tra Maven e la gente di Microsoft riguardo alla licenza e alla ridistribuzione del driver JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf

3

Fai attenzione alle risposte sopra. sqljdbc4.jar non è distribuito con una licenza pubblica, motivo per cui è difficile includerlo in un jar per il runtime e la distribuzione. Vedi la mia risposta di seguito per maggiori dettagli e una soluzione molto migliore. La tua vita diventerà molto più facile come la mia una volta trovata questa risposta.

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


2

Anche dopo aver installato il jar sqlserver, il mio esperto stava cercando di recuperare la dipendenza dal repository di maven. Quindi, ho fornito al mio pom il repository della mia macchina locale e funziona bene dopo che ... potrebbe essere di aiuto per qualcuno.

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


1

Sembra che Microsoft abbia pubblicato alcuni dei suoi driver su Maven Central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.