การตั้งค่าการพึ่งพา maven สำหรับ SQL Server


122

ฉันกำลังพัฒนาพอร์ตเล็ตที่ฉันมีสิทธิ์ไฮเบอร์เนตเข้าถึงฐานข้อมูล SQL Server ฉันตั้งค่าการอ้างอิง mavenสำหรับมันและพยายามค้นหาตัวเชื่อมต่อ SQL Server ด้วยวิธีเดียวกับที่ฉันรู้ว่ามี MySql

การค้นหาโดย Google ของฉันยังให้เฉพาะ Mysql เท่านั้นหากฉันค้นหาตัวเชื่อมต่อ SQL Server ค่าการพึ่งพา maven ที่ถูกต้องคืออะไร?


1
ที่เกี่ยวข้อง: stackoverflow.com/q/1074869/521799
Lukas Eder

คำตอบ:


213

ดาวน์โหลดไดรเวอร์ JAR จากลิงค์ที่ Olaf ให้มาและเพิ่มลงในที่เก็บ 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 ระบุว่าเป็น "Microsoft JDBC Driver 4.0 สำหรับ SQL Server" ดังนั้นฉันจะใช้ "-Dversion = 4.0" ในการติดตั้ง mvn
George Armhold

2
ฉันพบปัญหา: "ไม่มี POM ในไดเร็กทอรีนี้" สามารถดูวิธีแก้ปัญหาได้ที่นี่: stackoverflow.com/questions/16348459/…
Alan B. Dee

4
sourceforge jtds คือคำตอบของคุณ
Junchen Liu

1
คุณสามารถดาวน์โหลด jar ได้ที่นี่: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Ismail Yavuz

การดาวน์โหลดและเพิ่มลงใน maven repo ในพื้นที่จะไม่นำไปสู่การเชื่อมต่อที่แน่นหนากับเครื่องพัฒนาที่คุณกำลังสร้างแอปของคุณหรือไม่? ฉันหมายความว่าหากพยายามสร้างโครงการเดียวกันบนเครื่องอื่นก็จะไม่พบโถใน repo ในพื้นที่ จะเป็นการดีหรือไม่ที่จะเพิ่มลงในโครงการเพื่อให้พร้อมใช้งานบน VCS
Obaid Maroof

69

คำตอบสำหรับ Microsoft "ใหม่" และ "เจ๋ง"

ใช่ไดรเวอร์ SQL Server ภายใต้ใบอนุญาต MIT บน

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

คำตอบสำหรับ Microsoft "รุ่นเก่า":

สำหรับกรณีการใช้งานของฉัน (การทดสอบการรวม) มันเพียงพอที่จะใช้ขอบเขตระบบสำหรับการพึ่งพาไดรเวอร์ 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 ลงในการควบคุมเวอร์ชันภายในเครื่องได้ ไม่จำเป็นต้องให้นักพัฒนาแต่ละคนตั้งค่าด้วยตนเองในที่เก็บของตนเอง

ฉันได้รับแรงบันดาลใจจากคำตอบนี้สำหรับคำถาม Stack Overflow อื่นและฉันก็เขียนบล็อกเกี่ยวกับเรื่องนี้ไว้ที่นี่ด้วย


ถ้าเป็นไปได้ฉันคิดว่าการอัปโหลด JAR บนพื้นที่เก็บข้อมูล maven (Nexus) จะดีกว่า
mcoolive

@mcoolive: มันดีกว่าส่วนใหญ่แน่นอน แต่บางครั้งก็ง่ายกว่า (และยังเหมาะสม) ที่จะทำงานที่รวดเร็วและสกปรก
Lukas Eder

คำตอบนี้ล้าสมัยเมื่อเทียบกับคำตอบที่อัปเดตของ Touzery
Blessed Geek

1
@BlessedGeek: ฉันอัปเดตคำตอบก่อน Touzery ด้วยซ้ำ อันที่จริงคำตอบของ Touzery นั้นล้าสมัยกว่าเพราะยังอ้างอิงไลบรารีจาก sourceforge แหล่งที่มา !!
Lukas Eder

1
@MikhailFedorov: วิธีแก้ปัญหาของฉันใช้ได้ผลสำหรับฉัน อย่าลังเลที่จะเพิ่มคำตอบของคุณเอง (หรือแม้แต่คู่คำถาม / คำตอบ) ที่แสดงวิธีแก้ปัญหานี้จะดีมากสำหรับชุมชน
Lukas Eder

16

นอกจากนี้ยังมีทางเลือกอื่น: คุณสามารถใช้ไดรเวอร์ jTDS โอเพ่นซอร์สสำหรับ MS-SQL Server ซึ่งเข้ากันได้แม้ว่าจะไม่ได้ผลิตโดย Microsoft ก็ตาม สำหรับไดรเวอร์นั้นมีสิ่งประดิษฐ์ 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>

อัปเดตพ.ย. 2559 ตอนนี้ 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

2
โปรดทราบว่าไม่มีการเผยแพร่ JTDS ตั้งแต่ปี 2013 ดังนั้นอาจเป็นคำแนะนำที่ไม่ดีในปัจจุบัน ...
Emmanuel Touzery

ไดรเวอร์ jtds มีปัญหากับ ssl ใน java 8 (ได้รับการแก้ไข แต่ไม่ได้เปิดตัว) เราจึงเปลี่ยนไปใช้ sqljdbc4
rychu

9

ฉันเชื่อว่าคุณกำลังมองหาไดรเวอร์ Microsoft SQL Server JDBC: http://msdn.microsoft.com/en-us/sqlserver/aa937724


ใช่นี่คือหนึ่ง ฉันต้องการโหลดผ่าน maven ดังนั้นนี่ไม่ใช่คำตอบสำหรับคำถามของฉัน ดังนั้นคนแรกให้ที่จะได้รับเครื่องหมายของฉันสำหรับคำตอบของเขา / เธอ!
mico

3
ดูเหมือนว่ามีความขัดแย้งระหว่าง Maven และ Microsoft เกี่ยวกับการออกใบอนุญาตและการแจกจ่ายไดรเวอร์ JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf

3

ระวังคำตอบด้านบน sqljdbc4.jar ไม่ได้รับการแจกจ่ายภายใต้ใบอนุญาตสาธารณะซึ่งเป็นสาเหตุที่ยากที่จะรวมไว้ใน jar สำหรับรันไทม์และการแจกจ่าย ดูคำตอบของฉันด้านล่างสำหรับรายละเอียดเพิ่มเติมและวิธีแก้ปัญหาที่ดีกว่ามาก ชีวิตของคุณจะง่ายขึ้นมากเหมือนที่ฉันเคยพบเมื่อฉันพบคำตอบ

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


2

แม้ว่าหลังจากติดตั้ง jar sqlserver แล้ว 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.