SQL ServerのMaven依存関係のセットアップ


122

SQL ServerデータベースにHibernateでアクセスできるポートレットを開発しています。Mavenの依存関係を設定しました、MySqlが持っているのと同じ方法でSQL Serverコネクタを見つけようとします。

それでも、SQL Serverコネクタを検索した場合、私のGoogle検索ではMysqlしか表示されません。適切なmaven依存値は何ですか?


回答:


213

Olafから提供されているリンクからドライバーJARをダウンロードし、ローカルのMavenリポジトリーに追加します

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

次に、それをプロジェクトに追加します。

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

13
Olafの回答からリンクされたバージョンのリリースノートには、「SQL Server用のMicrosoft JDBC Driver 4.0」と記載されています。そのため、mvnインストールでは「-Dversion = 4.0」を使用します。
ジョージアームホールド2012

2
私はこの問題に遭遇していない:それに対する解決策がここで見つけることができ、「このディレクトリにはPOM」:stackoverflow.com/questions/16348459/...
アランB.ディー

4
sourceforge jtdsが答えです
Junchen Liu

1
jarはこちらからダウンロードできます:java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Yavuz

それをダウンロードしてローカルのmavenリポジトリーに追加しても、アプリを構築している開発マシンと密接に結びついていないでしょうか?つまり、同じプロジェクトを別のマシンでビルドしようとすると、ローカルリポジトリにjarが見つかりません。それをVCSで利用できるようにプロジェクトに追加するのは良いことではないでしょうか?
Obaid Maroof、2015

69

「新しい」「クールな」マイクロソフトへの回答。

はい、SQL ServerドライバーがMITライセンスで

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

「古い」マイクロソフトに対する回答:

私のユースケース(統合テスト)では、JDBCドライバーの依存関係のシステムスコープを使用するだけで十分でした。

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

そうすれば、JDBCドライバーをローカルのバージョン管理に入れることができます。各開発者が自分のリポジトリに手動で設定する必要はありません。

私はからインスピレーションを取った別のスタックオーバーフローの質問にこの答え私はまた、ここでそれについてブログました


可能であれば、ローカルのmavenリポジトリ(Nexus)にJARをアップロードする方がよいと思います
mcoolive

@mcoolive:ほとんどの場合、間違いなく優れています。しかし、簡単で汚い仕事をする方が簡単な場合もあります(適切な場合もあります)。
Lukas Eder

この回答は、Touzeryの更新された回答と比較して古くなっています。
Blessed Geek

1
@BlessedGeek:まあ、私はTouzeryの前でさえ私の答えを更新しました。実際、Touzeryの回答は、sourceforgeのライブラリを参照しているため、より古くなっています。sourceforge !!
Lukas Eder

1
@MikhailFedorov:私の解決策は私のために働いた。これを解決する方法を示す独自の回答(または質問と回答のペア)を自由に追加してください。コミュニティに最適です。
Lukas Eder 2017年

16

別の方法もあります。Microsoftが作成したものではありませんが互換性のあるMS-SQL ServerのオープンソースjTDSドライバーを使用できます。そのドライバーには、使用できるMavenアーティファクトがあります。

http://jtds.sourceforge.net/

http://mvnrepository.com/artifact/net.sourceforge.jtds/jtdsから:

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

2016年11月に更新、MicrosoftはMSSQL JDBCドライバーをgithubに公開し、mavenでも利用できるようになりました:

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

Java 1.6の場合:より高いバージョンは1.7のものだと思います。<dependency> <groupId> net.sourceforge.jtds </ groupId> <artifactId> jtds </ artifactId> <version> 1.2.4 </ version> </依存関係>
Roshan Khandelwal 2014年

2
2013年以降、JTDSのリリースがなかったため、最近は悪いアドバイスかもしれません...
Emmanuel Touzery、2016

jtdsドライバーは、Java 8のsslに問題があったため(パッチされたがリリースされていない)、sqljdbc4に切り替えました
rychu

9

Microsoft SQL Server JDBCドライバーを探していると思います:http : //msdn.microsoft.com/en-us/sqlserver/aa937724


はい、これです。私はそれをmavenを通してロードしたいので、これは実際には私の質問に対する答えではありませんでした。だから、最初にそれを与えると、彼/彼女の答えのために私のダニを得るでしょう!
mico

3
:JDBCドライバのライセンスと再配布に関するMavenとマイクロソフトの人々の間にいくつかの意見の相違があるように見えますblogs.msdn.com/b/jdbcteam/archive/2010/03/02/...
オラフ・

3

上記の答えには注意してください。sqljdbc4.jarはパブリックライセンスでは配布されないため、ランタイムおよび配布用のjarに含めるのは困難です。詳細とはるかに優れた解決策については、以下の私の回答を参照してください。私がこの答えを見つけたら、あなたの人生はずっと楽になります。

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


2

sqlserver jarをインストールした後でも、私のmavenはmavenリポジトリーから依存関係をフェッチしようとしていました。次に、自分のローカルマシンのリポジトリをpomに提供しましたが、その後は正常に動作します...誰かの助けになるかもしれません。

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


1

MicrosoftがいくつかのドライバーをMaven Centralに公開したようです:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.