Falta a comunicação do artefacto.base.sqlserver: sqljdbc4: jar: 4. 0

Estou a tentar adicionar a dependência do condutor do MS SQL no meu POM.o arquivo xml e o seguinte é a dependência.

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

mas eu tenho esta excepção

Falta a comunicação do artefacto.base.sqlserver: sqljdbc4: jar: 4.0

Eu realmente não entendo o problema.

Author: LINQ, 2013-10-23

10 answers

Actualizar

A Microsoft fornece agora este artefacto na Maven central. Veja a resposta de @nirmal para mais detalhes: https://stackoverflow.com/a/41149866/1570834

RESPOSTA ORIGINAL

O problema é que a Maven não consegue encontrar este artefacto em nenhum dos repositórios de maven configurados. Infelizmente, a Microsoft não disponibiliza este artefacto através de nenhum repositório maven. Você precisa baixar o frasco do o Website da Microsoft , e depois instalá-lo manualmente no seu repositório Maven local.

Pode fazer isto com o seguinte comando maven:

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
Então, da próxima vez que puseres o maven no teu POM, ele vai encontrar o artefacto.
 141
Author: DB5, 2017-11-15 09:50:18

A Microsoft recentemente abriu o seu controlador jdbc.

Agora pode encontrar o condutor em 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>

Ou para 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>
 47
Author: nirmal, 2016-12-14 18:43:08
Tive o mesmo problema e resolvi-o seguindo-o.
  • telecarregamento sqljdbc4.jar do website da Microsoft para a sua máquina local.
  • carregue com o botão direito no projecto-->importar-->Maven-->instalar ou enviar um artefacto para um repositório Maven, como se mostra abaixo.

enter image description here

* a seguir-->preencha os seguintes detalhes

Artifact file: localização do frasco que transferiu (Ex: E:\lib\sqljdbc4.frasco no meu caso)
Group Id: suplemento.base.sqlserver
Artifact Id: sqljdbc4
Version: 4.0

enter image description here

  • Depois refresque / limpe o projecto.

    Obrigado!
 25
Author: programmer, 2015-09-24 11:27:37

A resposta acima só adiciona o sqljdbc4.jar para o repositório local . Como resultado, ao criar o jar de projeto final para distribuição, o sqljdbc4 estará novamente em falta, como foi indicado no Comentário de @Tony sobre erro de tempo de execução.

A Microsoft (e a Oracle e outros fornecedores de terceiros) restringem a distribuição do seu software de acordo com a ENU/EULA. Portanto, esses módulos de software não são adicionados em frascos produzidos pela Maven para distribuição. Há hacks para contorná-lo (como fornecer a localização do arquivo jar de terceiros no tempo de execução), mas como desenvolvedor você deve ter cuidado em violar o licenciamento.

Uma melhor abordagem para conectores/drivers jdbc é usar jTDS, o que é compatível com a maioria dos DBMS, mais confiável, mais rápido (como por benchmarks), e distribuído sob licença GNU. Vai tornar a tua vida muito mais fácil de usar isto do que tentar enfiar a cavilha quadrada no buraco redondo seguindo qualquer um dos outros. técnicas acima.

 11
Author: Nelda.techspiress, 2015-05-07 21:26:32

Você também pode criar um repositório de projetos. É útil se mais desenvolvedores estão trabalhando no mesmo projeto, e a biblioteca deve ser incluída no projeto.

  • Primeiro, crie uma estrutura de repositório no diretório lib do seu projeto, e então copie a biblioteca para ele. A biblioteca deve ter o seguinte Nome-formato: <artifactId>-<version>.jar

    <your_project_dir>/lib/com/microsoft/sqlserver/<artifactId>/<version>/

  • Crie o ficheiro pom ao lado do ficheiro da biblioteca, e coloque a seguinte informação em it:

    <?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>
    
  • Neste ponto, você deve ter esta estrutura de diretório:

    <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

  • Vá ao ficheiro pom do seu projecto e adicione um novo repositório:

    <repositories>
        <repository>
            <id>Project repository</id>
            <url>file://${basedir}/lib</url>
        </repository>
    </repositories>
    
  • Finalmente, adicione uma dependência da biblioteca:

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

Actualizar 4.3.2017

Parece que a biblioteca pode ser obtida a partir do repositório disponível ao público. @veja as respostas de Nirmal e Jacek Grzelaczyk para mais detalhes.

 11
Author: Václav Kužel, 2017-03-04 13:34:20

Basta adicionar

 <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>sqljdbc4</artifactId>
      <version>4.0</version>
      <scope>runtime</scope>
 </dependency>
 2
Author: Jacek Grzelaczyk, 2016-11-16 10:49:56
Não é muito difícil. Ainda não li A carta. No entanto, provei que isto funciona. Você pode copiar o ficheiro sqljdbc4 jar para uma partilha de rede ou directório local. A tua Constituição.o gradle deve ser assim:
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 }
}

Na pasta sharedir / releases, tenho uma pasta semelhante à estrutura maven que é \sharedir\releases\com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar

Boa sorte. David Yen
 0
Author: David Mobile, 2015-06-30 17:53:51

Para o projecto Maven auto-contendo, normalmente instalo todas as dependências externas dos jar no repositório do projecto. Para o controlador JDBC do servidor SQL, pode fazer:

    Telecarregamento do controlador JDBC de https://www.microsoft.com/en-us/download/confirmation.aspx?id=11774
  • crie a pasta local-repo no seu projecto Maven
  • cópia temporária sqljdbc42.jar Para local-repo pasta
  • em local-repo pasta executar mvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://. para enviar o JAR para o repositório local (guardado em conjunto com o seu código no SCM)
  • sqljdbc42.jar e os ficheiros descarregados podem ser apagados
  • modifique o seu pom.xml e adicione referência ao repositório local do projecto: 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> Agora você pode executar o seu projeto em todos os lugares sem quaisquer configurações ou instalações adicionais.
 0
Author: Ramunas, 2016-09-08 13:11:47

Pode usar outro condutor

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

E em 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
Author: Jacek Grzelaczyk, 2016-11-24 18:44:20

Se estiver a ter algum problema ao incluir a dependência de 6.1. 0.jre7 de @nirmals responde em https://stackoverflow.com/a/41149866/1570834 , no teu pom com commons-codec/ azure-keyvault prefiro ir com isto:

    <dependency>
       <groupId>com.microsoft.sqlserver</groupId>
       <artifactId>mssql-jdbc</artifactId>
       <version>6.2.2.jre7</version>                
    </dependency>
 0
Author: ROOP, 2018-06-28 14:45:22