POM.xmlファイルにMS SQLドライバーの依存関係を追加しようとしていますが、以下が依存関係です。
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
しかし、私はこの例外を取得します
アーティファクトcom.Microsoft.sqlserver:sqljdbc4:jar:4.0が見つかりません
私は本当に問題を理解していません。
UPDATE
マイクロソフトは現在、このアーティファクトをMaven Centralで提供しています。詳細については、@ nirmalの回答を参照してください: https://stackoverflow.com/a/41149866/1570834
元の回答
問題は、構成された mavenリポジトリ のいずれでもMavenがこのアーティファクトを見つけられないことです。
残念ながら、MicrosoftはこのアーティファクトをMavenリポジトリ経由で利用できるようにしません。 jarを Microsoft Webサイト からダウンロードしてから、ローカルのMavenリポジトリに手動でインストールする必要があります。
これを行うには、次のmavenコマンドを使用します。
mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.Microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
次に、POMでMavenを実行すると、アーティファクトが見つかります。
Microsoft jdbcドライバーをオープンソース化 。
これで、Maven Centralでドライバーを見つけることができます。
<!-- https://mvnrepository.com/artifact/com.Microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
またはJava 7の場合:
<!-- https://mvnrepository.com/artifact/com.Microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre7</version>
</dependency>
私は同様の問題を抱えており、以下を行うことでそれを解決しました。
*次へ->次の詳細を入力しますArtifact file:
ダウンロードしたjarのパス(例:私の場合はE:\ lib\sqljdbc4.jar)Group Id:
com.Microsoft.sqlserverArtifact Id:
sqljdbc4Version:
4.0
上記の答えは、sqljdbc4.jarをlocalリポジトリにのみ追加します。その結果、配布用の最終プロジェクトjarを作成するときに、ランタイムエラーに関する@Tonyのコメントに示されているように、sqljdbc4が再び失われます。
Microsoft(およびOracleおよびその他のサードパーティプロバイダー)は、ENU/EULAに従ってソフトウェアの配布を制限しています。したがって、これらのソフトウェアモジュールは、配布用にMavenで作成されたjarに追加されません。それを回避するためのハック(実行時のサードパーティjarファイルの場所の提供など)がありますが、開発者としては、ライセンス違反に注意する必要があります。
jdbcコネクタ/ドライバのより良いアプローチは、 jTDSを使用することです。これは、ほとんどのDBMSと互換性があり、より信頼性が高く、高速です(ベンチマークに従って)、GNUライセンスの下で配布されます。上記のその他の方法のいずれかに従って、正方形のペグを丸い穴に打ち込むよりも、これを使用する方がはるかに簡単です。
プロジェクトリポジトリを作成することもできます。より多くの開発者が同じプロジェクトに取り組んでおり、ライブラリをプロジェクトに含める必要がある場合に役立ちます。
まず、プロジェクトのlibディレクトリにリポジトリ構造を作成してから、ライブラリをそこにコピーします。ライブラリには、次の名前形式が必要です:<artifactId>-<version>.jar
<your_project_dir>/lib/com/Microsoft/sqlserver/<artifactId>/<version>/
ライブラリファイルの横にpomファイルを作成し、次の情報を入力します。
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.2.0</modelVersion>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.2</version>
</project>
この時点で、次のディレクトリ構造が必要です。
<your_project_dir>/lib/com/Microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar
<your_project_dir>/lib/com/Microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom
プロジェクトのPOMファイルに移動して、新しいリポジトリを追加します。
<repositories>
<repository>
<id>Project repository</id>
<url>file://${basedir}/lib</url>
</repository>
</repositories>
最後に、ライブラリに依存関係を追加します。
<dependencies>
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.2</version>
</dependency>
</dependencies>
アップデート4.3.2017
ライブラリは、公開されているリポジトリから取得できるようです。 @詳細については、nirmalとJacek Grzelaczykの回答を参照してください。
追加するだけ
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
別のドライバーを使用できます
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
およびxml
<bean id="idNameDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://[ip]:1433;DatabaseName=[name]" />
<property name="username" value="user" />
<property name="password" value="password" />
</bean>
難しくありません。ライセンスをまだ読んでいません。しかし、私はこれが機能することを証明しました。 sqljdbc4 jarファイルをネットワーク共有またはローカルディレクトリにコピーできます。 build.gradleは次のようになります。
apply plugin: 'Java'
//apply plugin: 'maven'
//apply plugin: 'enhance'
sourceCompatibility = 1.8
version = '1.0'
//library versions
def hibernateVersion='4.3.10.Final'
def microsoftSQLServerJDBCLibVersion='4.0'
def springVersion='2.5.6'
def log4jVersion='1.2.16'
def jbossejbapiVersion='3.0.0.GA'
repositories {
mavenCentral()
maven{url "file://Sharedir/releases"}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile "org.hibernate:hibernate-core:$hibernateVersion"
compile "com.Microsoft.sqlserver:sqljdbc4:$microsoftSQLServerJDBCLibVersion"
}
task showMeCache << {
configurations.compile.each { println it }
}
sharedir/releasesディレクトリの下に、\ sharedir\releases\com\Microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jarであるmaven構造に類似したディレクトリがあります
がんばろう。
デビッド・イェン
自己完結型のMavenプロジェクトの場合、通常、すべての外部jar依存関係をプロジェクトのリポジトリにインストールします。 SQL Server JDBCドライバーの場合:
local-repo
フォルダーを作成しますsqljdbc42.jar
フォルダーにlocal-repo
を一時的にコピーしますlocal-repo
フォルダーでmvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.Microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://.
を実行して、JARをローカルリポジトリーに展開します(SCMにコードと共に保存されます)sqljdbc42.jar
およびダウンロードしたファイルは削除できますpom.xml
を変更し、プロジェクトのローカルリポジトリへの参照を追加します。xml <repositories> <repository> <id>parent-local-repository</id> <name>Parent Local repository</name> <layout>default</layout> <url>file://${basedir}/local-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
これで、追加の構成やインストールなしで、どこでもプロジェクトを実行できます。@nirmalsから6.1.0.jre7の依存関係を含めるときに問題が発生している場合は、commons-codec/AzureのPOMで https://stackoverflow.com/a/41149866/1570834 に答えてください-keyvault私はこれで行くことを好む:
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.2.jre7</version>
</dependency>