Encontre o driver JDBC Oracle no repositório Maven


292

Desejo adicionar o driver oracle jdbc ao meu projeto como dependência (escopo do tempo de execução) - ojdbc14. No site MVNrepository, a dependência para colocar no POM é:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

é claro que isso não funciona, pois não está no repositório central usado pelo maven. 2 perguntas:

  1. Como localizo um repositório (se houver) que contém esse artefato?

  2. Como o adiciono para que o Maven o use?



1
ojdbc6 no repositório público do maven: stackoverflow.com/questions/9898499/…
Vadzim

Respostas:


412

Como localizo um repositório (se houver) que contém esse artefato?

Infelizmente, devido à licença binária, não há repositório público com o Oracle Driver JAR. Isso acontece com muitas dependências, mas não é culpa do Maven. Se você encontrar um repositório público contendo o JAR, pode ter certeza de que isso é ilegal.

Como o adiciono para que o Maven o use?

Alguns JARs que não podem ser adicionados devido a razões de licença ter um pom entrada no repo Maven Central . Basta verificar, ele contém as informações preferidas do Maven do fornecedor:

<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>

... e o URL para baixar o arquivo que, neste caso, é http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .

Depois de baixar o JAR, basta adicioná-lo ao repositório do computador com (observe que eu puxei o groupId, o artifactId e a versão do POM):

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
     -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true

O último parâmetro para gerar um POM salvará você dos avisos pom.xml

Se sua equipe possui um repositório Maven local, este guia pode ser útil para carregar o JAR lá.


@ Victor - onde localizo essas linhas? em settings.xml?
DeJell # 07:

1
Aqueles que não são linhas em settings.xml mas um comando, uma vez que você tem o JAR que comando irá adicionar ao seu repositório local
victor hugo

15
Para OJDBC6: 1. mvn install: install-file -DgroupId = com.oracle -DartifactId = ojdbc6 -Dversion = 11.2.0.3 -Dpackaging = jar -Dfile = ojdbc6.jar -DgeneratePom = true 2. Adicione isso ao pom.xml: <dependency> <groupId> com.oracle </groupId> <artifactId> ojdbc6 </artifactId> <version> 11.2.0.3 </version> </dependency> #
oskarae

11
Eu perambulo por que a Oracle é tão feia que não se importa com todos os julgamentos públicos que possui. É ruim mesmo nessas pequenas coisas, como a disponibilidade pública de suas próprias bibliotecas gratuitas.
Askar Kalykov

7
@AmanicA De acordo com o stackoverflow.com/a/27943380/7677308 , a Oracle agora hospeda esse repositório
SilverNak

51

Por qualquer motivo, não consegui executar nenhuma das soluções acima. (Ainda não pode.)

Em vez disso, o que fiz foi incluir o jar no meu projeto (blech) e criar uma dependência de "sistema" para ele, indicando o caminho para o jar. Provavelmente não é a maneira CERTA de fazê-lo, mas funciona. E elimina a necessidade de outros desenvolvedores da equipe (ou o responsável por configurar o servidor de compilação) colocar o jar em seus repositórios locais.

ATUALIZAÇÃO : Esta solução funciona para mim quando executo o Hibernate Tools. Porém, NÃO parece funcionar para criar o arquivo WAR. Ele não inclui o arquivo ojdbc6.jar no arquivo WAR de destino.

1) Crie um diretório chamado "lib" na raiz do seu projeto.

2) Copie o arquivo ojdbc6.jar para lá (seja qual for o nome do jar.)

3) Crie uma dependência parecida com esta:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name -->
</dependency>

Feio, mas funciona para mim.

Para incluir os arquivos no arquivo war, adicione o seguinte ao seu pom

<build>
    <finalName>MyAppName</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/java</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                            <include>**/*.css</include>
                            <include>**/*.html</include>
                        </includes>
                    </resource>
                    <resource>
                        <directory>${basedir}/lib</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                        <includes>
                            <include>**/*.jar</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

8
Na verdade, eu gosto dessa solução porque ela não requer a configuração do nexus, normalmente existem apenas 1 ou 2 jars como este em um projeto e simplifica a instalação de outros desenvolvedores no projeto porque eles não precisam atualizar o ambiente .m2 local . (oracle é o principal candidato para isso). Além disso, se você atualizar seu repositório de origem com um novo jar do oracle, todos os desenvolvedores o receberão na próxima tentativa.
Q Caldeira

Informações adicionadas sobre como adicionar os arquivos JAR para o arquivo WAR
ojblass


1
@Marvo, eu tentei muitas soluções e este foi o melhor, muito obrigado
Mahmoud Saleh

35

O driver Oracle JDBC agora está disponível no Repositório Oracle Maven (não na Central).

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>

O Repositório Oracle Maven requer um registro do usuário. As instruções podem ser encontradas em:

https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides

Atualização 2019-10-03

Notei que o Spring Boot agora está usando o driver Oracle JDBC do Maven Central .

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc10</artifactId>
    <version>19.3.0.0</version>
</dependency>

Para usuários Gradle, use:

implementation 'com.oracle.ojdbc:ojdbc10:19.3.0.0'

Não há necessidade de registro do usuário.

Atualização 2020-03-02

Agora, a Oracle está publicando os drivers com o ID do grupo com.oracle.database. Veja a resposta de Anthony Accioly para mais informações. Obrigado Anthony.

Driver Oracle JDBC compatível com JDK6, JDK7 e JDK8

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc6</artifactId>
  <version>11.2.0.4</version>
</dependency>

Driver Oracle JDBC compatível com JDK8, JDK9 e JDK11

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>19.3.0.0</version>
</dependency>

Driver Oracle JDBC compatível com JDK10 e JDK11

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc10</artifactId>
  <version>19.3.0.0</version>
</dependency>

este deve ser o caminho preferido.
Ashish

30

Faça o download do frasco e coloque-o no seu projeto src/lib. Agora você pode usar o plug-in do maven installer.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>install-oracle-jdbc</id>
            <goals>
                <goal>install-file</goal>
            </goals>
            <phase>clean</phase>
            <configuration>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0</version>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
                <createChecksum>true</createChecksum>
                <file>${project.basedir}/src/lib/ojdbc6.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

Agora você só precisa executar mvn cleanuma vez e a lib do oracle está instalada no seu repositório maven local.


9
alternativa muito útil!
Rakesh Waghela

22

A Oracle agora está expondo um repositório maven em maven.oracle.com No entanto, você precisa estar autenticado.

Vejo https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

De acordo com os comentários na postagem do blog, o driver ojdbc deve estar disponível nas seguintes coordenadas:

<groupId>com.oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>

7
Isso funciona. É um pouco de aborrecimento. Você precisa garantir o artefato correto, criar uma conta Oracle, adicionar algumas coisas a settings.xml e seu arquivo pom.xml e adicionar um nome de usuário e senha para essa conta a settings.xml. A Oracle precisa corrigir o seu licenciamento, porque este ainda é um PITA.
precisa saber é o seguinte

12
Exigir autenticação para obter artefatos elaborados parece ridículo.
Rafael Soares - tuelho

3
Se, por algum motivo, você precisar usar ojdbc6 (ou seja, você estiver preso no Java 6), altere o artifactId para ojdbc6 e altere a versão para 12.1.2-0-0.
Dcsohl

Estou tentando encontrar a versão 11g (11.2.0.4) para java 6 ... alguém encontrou?
Jspfreire

2
Atualização : Pregado: para drivers jdbc mais antigos, você também deve alterar groupId: mvn org.apache.maven.plugins: maven-dependency-plugin: 2.1: get -DrepoUrl = maven.oracle.com -Dartifact = com.oracle.jdbc : ojdbc6: 11.2.0.4
jpfreire 15/06

17

Tente com:

<repositories>
    <!-- Repository for ORACLE ojdbc6. -->
    <repository>
        <id>codelds</id>
        <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
</repositories>
<dependencies> 
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
</dependencies> 

14
Exceto que isso é uma violação da licença do Oracle.
Ben L.

3
Violência da licença, mas funciona. Eu o uso para fins educacionais (não em produção). Também contém o driver 12c <dependency> <groupId> com.oracle </groupId> <artifactId> ojdbc7 </artifactId> <version> 12.1.0.2 </version> </dependency>
Svetlin Nakov

4
Além da questão do licenciamento, você não deve adicionar repositórios desconhecidos ao seu pom . Isso representa um risco à segurança e também pode ameaçar sua compilação. Quanta confiança você pode depositar em um repositório de A Igreja de Jesus Cristo dos Santos dos Últimos Dias ? Que garantias eles fornecem de que o repositório é confiável, seguro e protegido e que não mexem com ele? O que acontece se eles forem invadidos e publicarem uma versão mal-intencionada do driver ojdbc ou qualquer outra de suas dependências?
Didier L

14

1. Como localizo um repositório (se houver) que contém esse artefato?

Como o DavidS comentou, a linha que citei no momento em que respondi não está mais presente no contrato atual (no momento em que estou escrevendo agora) do OTN License Agreement que vinculei. Considere esta resposta apenas para a versão mais antiga do artefato, como 10.2.0.3.0 e similares.

Todos os drivers JDBC do banco de dados Oracle são distribuídos sob o contrato de licença da OTN .

Se você ler o Contrato de licença da OTN, encontrará este termo de licença:

Você não pode:
...
- distribuir os programas, a menos que acompanhados de seus aplicativos;
...

é por isso que não é possível encontrar o frasco do motorista em nenhum repositório Maven público, porque ele seria distribuído sozinho e, se acontecesse, seria uma violação de licença.

Adicionando a dependência:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

(ou qualquer versão posterior) torne os downloads do Maven ojdbc14-10.2.0.3.0.pomapenas, e nesse pom você pode ler:

...
<licenses>
    <license>
        <name>Oracle Technology Network Development and Distribution License Terms</name>
        <url>http://www.oracle.com/technology/software/htdocs/distlic.html</url>
    </license>
</licenses>
...

que informa sobre a licença OTN.

2. Como o adiciono para que o Maven o use?

A fim de tornar a dependência acima funciona Concordo com Victor Hugo que estavam sugerindo que você aqui para instalar manualmente o frasco em seu repositório Maven local (do .m2diretório) executando:

mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle 
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar

mas quero acrescentar que o termo de licença acima não se limita apenas onde você não pode encontrar o jar JDBC, mas também onde você o instala!

De fato, seu repositório Maven local deve ser privado e não compartilhado, porque, se fosse compartilhado, seria um tipo de distribuição na qual o jar é distribuído sozinho, mesmo que para um pequeno grupo de pessoas na sua rede local, e isso represente um Violação do Contrato de Licença OTN .

Além disso, acho que você deve evitar instalar o jar JDBC no gerenciador de repositório da empresa (como Artifactory ou Nexus ) como um único artefato, porque, se instalado, ele ainda será distribuído sozinho, mesmo que apenas para as pessoas da sua organização, e isso representa uma violação do Contrato de licença da OTN .


1
Notavelmente, a linha que você citou não está mais presente no contrato que você vinculou. A linha mais próxima restante é, eu acho: "Concedemos a você um direito não exclusivo e intransferível de copiar e distribuir a Documentação de Programas e Programas não modificada como parte e incluída no Seu aplicativo que se destina a interoperar com o Produto Associado, se houver, desde que Você não cobra aos Seus usuários finais taxas adicionais pelo uso dos Programas ", que é como você pode ver que está mais preocupado com o pagamento do que com as especificidades da redistribuição.
Davids

13

Você pode usar o Nexus para gerenciar dependências de terceiros e dependências em repositórios maven padrão.


4
Como o nexus ajudaria nesse caso? De onde ele fará o download do artefato?
Ziggy

4
A resposta está incompleta, mas acho que @Michael Munsey está dizendo para criar um repositório interno / corporativo para fazer o download.
21412 Randolph

Sim. Configure o Nexus, faça o download manual dos jars e coloque-os no Nexus para que sucessivas construções de maven possam retirá-lo da sua instância do Nexus.
Michael Munsey

1
@MichaelMunsey De um modo geral, sugerir um gerente de repositório como Artifactory ou Nexus seria uma boa resposta, mas no caso específico dos drivers de banco de dados Oracle JDBC, não é bom porque, mesmo que faça as coisas funcionarem, infelizmente o expõe a problemas devido a esta violação do termo de licença .
Taringamberini

6

Até o momento, não é possível usar repositórios maven. Estou usando o ivy como ferramenta de gerenciamento de dependências, mas também uso os repositórios ibiblio do maven2. E isso está funcionando para a hera:

<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>

A dependência do Maven2 pode ser algo assim:

<dependency> 
    <groupId>oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>10.2.0.2</version> 
</dependency>

Observe que eu defino http://download.java.net/maven/2/ e http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [organização] / [módulo] / [ revisão] / [artefato] - [revisão]. [ext] como repositório externo do maven2 nas configurações da minha hera.


1
Esta é uma ótima resposta - você pode simplesmente adicionar o repositório: mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2 ao seu pom.xml para que isso funcione.
Grouchal

7
Pode funcionar, mas é legal? Conforme explicado em uma das outras respostas aqui, o Oracle não permite que o driver seja distribuído por ninguém além deles e eles não fornecem um repositório Maven. Se você usar esta solução, em algum momento o driver poderá ser removido do repositório quando você menos esperar.
LS

1
@Grouchal Esta resposta faz as coisas funcionarem, mas, infelizmente, expõe você a problemas devido a esta violação dos termos da licença .
Taringamberini

@ Grouchal ... não há http://maven.ibiblio.org/maven/oraclenem http://maven.ibiblio.org/maven/com.oracle.
21717 David

6

Até hoje (27 de fevereiro de 2020), a Oracle anunciou que havia publicado todas as bibliotecas do cliente JDBC da versão 11.2.0.4 (por exemplo, ojdbc6) para 19.3.0 (por exemplo, ojdbc10) no Maven Central sob o ID do grupo com.oracle.database :

Exemplo:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc10</artifactId>
  <version>19.3.0.0</version>
</dependency>

4

Os drivers Oracle JDBC agora estão disponíveis no Maven Central . Aqui está o link:

Drivers JDBC Oracle - Maven Central

Artigo de desenvolvedores da Oracle anunciando a disponibilidade dos drivers Oracle JDBC no Maven Central:

Anúncio da Oracle - drivers JDBC da Oracle disponíveis no Maven Central

Exemplo:

<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc10 -->
<dependency>
   <groupId>com.oracle.database.jdbc</groupId>
   <artifactId>ojdbc10</artifactId>
   <version>19.3.0.0</version>
</dependency>

3

Boas notícias, pessoal! Finalmente, podemos usar o repo oficial da Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides


4
Boas notícias, mas as configurações de segurança são muito complexas. É mais fácil fazer o download do JAR na pasta "lib" como fizemos em 1999.
Svetlin Nakov

funciona! A configuração de segurança não é tão complexa e está bem documentada, você deve fazer isso apenas uma vez. Certamente o fato de você ter que codificar sua senha (criptografada) em algum lugar é uma dor, também questiono a decisão da Oracle de "proteger" o acesso ao seu repositório "público", não faz sentido do ponto de vista do desenvolvedor.
Pierluigi Vernetto 28/10

2

Alguns produtos Oracle suportam a publicação de artefatos publicados em um repositório local. Os produtos têm um diretório plugin / maven que contém descrições de onde encontrar esses artefatos e onde armazená-los. Existe um plug-in da Oracle que realmente fará o upload.

Consulte: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm

Um dos produtos que podem enviar OJDBC dessa maneira é o WLS, mas usa coordenadas bastante estranhas:

<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.2-0-0</version>

... e enquanto isso, o repositório também está disponível ao público: blogs.oracle.com/WebLogicServer/entry/…
eckes 20/04/2015

1

Eu envio o código-fonte aberto sob LGPLv2 e, mesmo depois de várias conversas por email com a Oracle, não estava claro se eu estava autorizado a enviar o driver JDBC binário com a minha distribuição. O problema estava relacionado à compatibilidade da minha licença com os termos da OTN, e sugeriram que eu não tinha permissão para enviar o motorista. Presumivelmente relacionado a esta parte

(b) distribuir os programas com os aplicativos que você desenvolveu para seus clientes, desde que cada licenciado concorde em termos de licença consistentes com os termos deste Contrato

Portanto, mesmo que você consiga publicar o driver legalmente em seu repositório maven exclusivo / local, ainda há a restrição sobre o que você pode fazer com esse artefato. Parece absurdo que, mesmo que eu envie o driver deles em formato binário, juntamente com o arquivo de licença completo da OTN, ainda não o possa usar e devo forçar meus usuários a baixar manualmente o driver Oracle e soltar no caminho da minha biblioteca antes que possam usar meu software.


0

Há um repositório que fornece o frasco. No SBT, adicione um resolvedor semelhante a este: "oracle driver repo" em " http://dist.codehaus.org/mule/dependencies/maven2 "

e uma dependência: "oracle"% "ojdbc14"% "10.2.0.2"

Você pode fazer o mesmo com o maven. pom.xml e jar estão disponíveis ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).


Tenha cuidado porque este pom http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom não possui uma definição de licença, portanto, não acho que foi carregado pelo proprietário do artefato. Essa resposta faz as coisas funcionarem, mas, infelizmente, expõe você a problemas devido a esta violação do termo de licença .
Taringamberini

Downvoter, você está com raiva de mim ou da Oracle? :) Explique seu voto negativo para que outros usuários saibam qual é o problema com esta resposta.
yǝsʞǝla

0

Se você estiver usando o Netbeans, vá para Dependências e instale manualmente o artefato. Localize o arquivo .jar baixado e pronto. A compilação limpa resolverá quaisquer problemas.


0

Você pode encontrar um projeto de amostra simples do Github para usar um driver Oracle JDBC no Maven Project aqui .

Você pode encontrar todas as explicações para sua integração contínua + uma amostra e executar no Travis-CI.

DEMO


1
Um link para uma solução é bem-vindo, mas garanta que sua resposta seja útil sem ela: adicione contexto ao link para que seus colegas usuários tenham uma idéia do que é e por que está lá; depois cite a parte mais relevante da página que você ' reencaminhando para o caso de a página de destino estar indisponível. Respostas que são pouco mais que um link podem ser excluídas.
Samuel Liew

1
Seu perfil indica que você está associado ao site ao qual você se vinculou. Vincular a algo ao qual você é afiliado (por exemplo, um produto ou site) sem revelar que é seu é considerado spam no Stack Exchange / Stack Overflow. Veja: O que significa "boa" autopromoção? , algumas dicas e conselhos sobre autopromoção . Qual é a definição exata de "spam" para Stack Overflow? e O que faz com que algo seja spam .
Samuel Liew

0

Para dependência

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>

Experimentar

<repository>
    <id>mvnrepository</id>
    <url>http://nexus.saas.hand-china.com/content/repositories/rdc</url>
</repository>

0

No meu caso, ele funciona para mim depois de adicionar esta dependência de versão abaixo (10.2.0.4). Depois de adicionar esta versão 10.2.0.3.0, ela não funciona devido ao arquivo .jar não estar disponível no caminho do repositório.

<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4</version>

0

Por favor tente abaixo:

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>


-3

RESOLVIDO

  • Faça as seguintes configurações para resolver o erro

Este repositório precisa ser ativado para encontrar dependências do Oracle 10.0.3.0 (essa configuração precisa ser feita em Buildconfig.groovy grails.project.dependency.resolver = "ivy" // ou ivy

Use também as seguintes configurações para o tempo de compilação do download do driver Oracle

tempo de execução "com.oracle:ojdbc:10.2.0.3.0"

Isso deve resolver seu problema por não encontrar o driver Oracle para aplicativo grails


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.