web-dev-qa-db-ja.com

アーティファクトcom.Microsoft.sqlserver:sqljdbc4:jar:4.0がありません

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が見つかりません

私は本当に問題を理解していません。

93
SAR

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を実行すると、アーティファクトが見つかります。

150
DB5

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

私は同様の問題を抱えており、以下を行うことでそれを解決しました。

  • マイクロソフトのWebサイトからsqljdbc4.jarをローカルマシンにダウンロードします。
  • 以下に示すように、「プロジェクト」->「インポート」->「Maven」->「Mavenリポジトリーへの成果物のインストールまたはデプロイ」を右クリックします。

enter image description here

*次へ->次の詳細を入力します

Artifact file:ダウンロードしたjarのパス(例:私の場合はE:\ lib\sqljdbc4.jar)
Group Id: com.Microsoft.sqlserver
Artifact Id: sqljdbc4
Version: 4.0

enter image description here

  • 次に、プロジェクトを更新/クリーンアップします。

    ありがとうございました!
25
programmer

上記の答えは、sqljdbc4.jarをlocalリポジトリにのみ追加します。その結果、配布用の最終プロジェクトjarを作成するときに、ランタイムエラーに関する@Tonyのコメントに示されているように、sqljdbc4が再び失われます。

Microsoft(およびOracleおよびその他のサードパーティプロバイダー)は、ENU/EULAに従ってソフトウェアの配布を制限しています。したがって、これらのソフトウェアモジュールは、配布用にMavenで作成されたjarに追加されません。それを回避するためのハック(実行時のサードパーティjarファイルの場所の提供など)がありますが、開発者としては、ライセンス違反に注意する必要があります。

jdbcコネクタ/ドライバのより良いアプローチは、 jTDSを使用することです。これは、ほとんどのDBMSと互換性があり、より信頼性が高く、高速です(ベンチマークに従って)、GNUライセンスの下で配布されます。上記のその他の方法のいずれかに従って、正方形のペグを丸い穴に打ち込むよりも、これを使用する方がはるかに簡単です。

11

プロジェクトリポジトリを作成することもできます。より多くの開発者が同じプロジェクトに取り組んでおり、ライブラリをプロジェクトに含める必要がある場合に役立ちます。

  • まず、プロジェクトの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の回答を参照してください。

11
Václav Kužel

追加するだけ

 <dependency>
      <groupId>com.Microsoft.sqlserver</groupId>
      <artifactId>sqljdbc4</artifactId>
      <version>4.0</version>
      <scope>runtime</scope>
 </dependency>
2

別のドライバーを使用できます

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

難しくありません。ライセンスをまだ読んでいません。しかし、私はこれが機能することを証明しました。 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構造に類似したディレクトリがあります

がんばろう。

デビッド・イェン

0
David Mobile

自己完結型のMavenプロジェクトの場合、通常、すべての外部jar依存関係をプロジェクトのリポジトリにインストールします。 SQL Server JDBCドライバーの場合:

  • https://www.Microsoft.com/en-us/download/confirmation.aspx?id=11774 からJDBCドライバーをダウンロードします
  • mavenプロジェクトに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>これで、追加の構成やインストールなしで、どこでもプロジェクトを実行できます。
0
Ramunas

@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>
0
ROOP