Oracle JDBC ojdbc6 Jar como uma dependência Maven

103

Não consigo fazer com que o Maven empacote o arquivo ojdbc6.jar no arquivo war do meu projeto. Eu o tenho funcionando dentro do arquivo POM ao especificar uma dependência diretamente para as ferramentas do Hibernate. Mas ele não será empacotado com o arquivo war do projeto e, portanto, meu projeto não será executado no Tomcat.

Tentei todas as soluções que encontrei na rede, incluindo aquelas especificadas para esta questão aqui:

Encontre o driver JDBC Oracle no repositório Maven

Mais recentemente, fiz o seguinte:

  1. Baixe o arquivo jar para minha máquina

  2. Execute o seguinte comando para instalar o jar em meu repositório local:

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

    (Eu tentei todos os tipos de variantes desse comando também.)

  3. Por fim, coloquei a dependência em meu arquivo pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Eu executo uma compilação limpa, mas falha:

    mvn -U clean package
    
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building jazztwo 0.0.1
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.700s
    [INFO] Finished at: Tue Mar 27 15:06:14 PDT 2012
    [INFO] Final Memory: 3M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project jazztwo: Could not resolve dependencies for project edu.berkeley:jazztwo:war:0.0.1: Could not find artifact com.oracle:ojdbc6:jar:11.2.0.3 in central (http://repo1.maven.org/maven2) -> [Help 1]

Por que isso não funciona? Estou pronto para jogar peças caras de computador pela sala. Isso tem perdido muito tempo. (Obrigado, Oracle. Quanto pagamos novamente?)

É porque estou em um Mac, talvez?

Marvo
fonte
6
Você pode verificar se o arquivo ojdbc6-11.2.0.3.jarestá disponível em seu repositório local na pasta correta?
Raghuram
1
O arquivo jar parece nunca ser copiado para o repositório. Apenas um monte de arquivos que parecem fazer referência a ele. O arquivo precisa ser chamado exatamente assim? É apenas ojdbc6.jar no meu diretório lib.
Marvo
15
Hmm! então mvn install:install-filenão funcionou. Você deve fornecer a localização absoluta ojdbc6.jarou executar o comando da pasta que o contém. O nome do arquivo não é um problema. Você pode executar com um -Xsinalizador para que possa depurar informações.
Raghuram
Existe alguma saída quando você executa install-file? O Maven deve informar onde ele instala o arquivo ou se houve algum erro.
nwinkler
1
Como uma nota não relacionada: Você deve olhar para o uso de um espelho de repositório (algo como Nexus, Artifactory, Archiva, ...). Você poderia carregar o arquivo lá e ele estaria disponível não apenas para você, mas para todos os outros usando o mesmo espelho também.
nwinkler

Respostas:

136

É melhor adicionar um novo repositório Maven (de preferência usando seu próprio arteifactory) ao seu projeto em vez de instalá-lo em seu repositório local.

Sintaxe Maven:

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

Exemplo de Grails:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'
Ondrej Kvasnovsky
fonte
3
Em última análise, foi isso que fizemos. Montamos um repositório aqui e todos os nossos projetos agora o usam. No entanto, acho útil saber fazer as duas coisas.
Marvo
3
Esse repositório lds.org é legal? De acordo com esta resposta, é ilegal: stackoverflow.com/a/1074971/1415732
Alden
2
Eu me pergunto, se eu instalasse uma dependência no repositório da minha empresa, seria ilegal também? Ou apenas os repositórios públicos são ilegais? É culpa da Oracle que eles não tenham um repositório Maven público para suas bibliotecas. Eu prefiro agradecer que alguém esteja compartilhando essa biblioteca em seu repositório (e ela está constantemente acessível).
Ondrej Kvasnovsky
3
Ondrej: No meu entendimento, só é ilegal se o repositório for público. Minha empresa hospeda ojdbc em um repositório maven privado (arteifactory) exatamente da maneira que você sugere.
Ray Myers
3
Claro que é "melhor" adicionar algum repositório arbitrário ao seu projeto, sim. Uau, isso está errado em muitos níveis
zb226
41

Para qualquer um que leia esta postagem no futuro, você não precisa fazer o cd para o diretório onde o jar está presente. Aqui está o que você precisa fazer -

Vá para a pasta do seu projeto de onde você pode executar comandos maven (quando você faz um ls -ltr nesta pasta, você deve ver pom.xml)

Faça isso -

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=<Path where the jar is, example downloads>/ojdbc6.jar -DgeneratePom=true

Feito isso, você pode adicionar a dependência em seu pom.xml, algo como isto -

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
Rickygrimes
fonte
3
Só uma observação: Depois de seguir essas etapas, ainda tinha o mesmo erro no eclipse até a execução Maven > Update Project. Então, tudo funcionou perfeitamente. Esta etapa pode ser óbvia, mas achei que deveria adicioná-la.
user12893298320392
2
... para adicionar à "postagem Olá futuro leitor". isso falhou ao executar o PowerShell, mas funcionou conforme o esperado executando o Windows CMD-shell comum. Sem poderes para você!
phareim
para quem está tentando fazer isso no Windows, o conselho de Phareim é ouro. Eu tenho isso funcionando no windows 7 executando o maven 3.3.3 digitando o comando mvn no prompt de comando. powershell continuou jogando o erro 'pom não encontrado'.
Quest Monger de
A ordem mencionada é importante. Eu adicionei a dependência primeiro, em seguida, executei o comando mvn intsall. O erro não desapareceu. Tentei remover a dependência, salve e adicione-a novamente e salve. Todos os erros resolvidos (desde que seu projeto esteja configurado para "construir automaticamente")
Kailas
24

A resposta correta foi fornecida por Raghuram na seção de comentários à minha pergunta original.

Por alguma razão, apontar "mvn install" para um caminho completo do arquivo físico ojdbc6.jar não funcionou para mim. (Ou eu sempre alterei o problema ao executar o comando, mas nenhum erro foi emitido.)

Fazer cd-ing no diretório onde mantenho o ojdb6.jar e executar o comando a partir dele funcionou pela primeira vez.

Se Raghuram quiser responder a essa pergunta, vou aceitar sua resposta. Obrigado a todos!

Marvo
fonte
1
Obrigado @Raghuram e Marvo
aranha
7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

para resolver o problema do ORACLE JAR com o aplicativo Spring,

Oracle JDBC ojdbc6 Jar como uma dependência Maven

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`
Sushil Gulhane
fonte
Maven é muito exigente com as versões que nem sempre são fáceis de adivinhar. Boa captura de que a versão é 11.2.0, não 11.2.0.3
Michael Shopsin
5

Primeiro você precisa baixar o jar específico do site da Oracle (ojdbc.jar versão 11.2.0.3)

se você baixá-lo para C: \ filefolder

vá para esse diretório no prompt do cmd e forneça o comando abaixo. Ele instalará a dependência. Então, você pode construir seu projeto.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true
Shermi
fonte
2

Depois de executar

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

verifique sua pasta de repositório .m2 (/com/oracle/ojdbc6/11.2.0.3) para ver se ojdbc6.jar existe. Se não, verifique as configurações do repositório maven em $ M2_HOME / conf / settings.xml

Jayen Chondigara
fonte
2

A configuração abaixo funcionou para mim. Consulte este link para mais detalhes.

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>
Barani r
fonte
Isso é novo, já que fiz a pergunta. Agradável!
Marvo
2

Como o Oracle é o produto licenciado, há problemas em adicionar diretamente a dependência do maven. Para adicionar qualquer versão do ojdbc.jar, podem ser feitos 2 passos abaixo.

  1. Execute o comando abaixo para instalar ojdbc.jar no repositório local maven.
/opt/apache-maven/bin/mvn install:install-file
    -Dfile=<path-to-file>/ojdbc7.jar
    -DgroupId=com.oracle
    -DartifactId=ojdbc7
    -Dversion=12.1.0.1.0
    -Dpackaging=jar

Isso adicionará a dependência ao repositório local.

  1. Agora, adicione a dependência no arquivo pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>
Mohamed
fonte
1

Segui o comando abaixo e funcionou:

mvn install:install-file -Dfile=E:\JAVA\Spring\ojdbc14-10.2.0.4.0.jar\ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar

Após a instalação, verifique se o jar está instalado corretamente em seu M2_repo.

kuser699
fonte
1

Eu tentei usar a dependência sem tag de versão e funcionou bem para mim.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>
Veswanth
fonte
0

Adicione a seguinte dependência em pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>
Kiran P Fegade
fonte
0

Vá para a unidade C-> usuário-> PcName-> find .m2 e cole o arquivo jar ojdbc baixado lá, o servidor irá selecioná-lo automaticamente.

Hassan Ahmed
fonte
-1

Os drivers Oracle JDBC e outros Jars associados estão disponíveis no Central Maven. Sugerimos usar as versões oficiais do Oracle JDBC com suporte de 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 e 19.7.0.0. Eles estão disponíveis no Repositório Central Maven . Consulte o Guia Central do Maven para obter mais detalhes.

Recomenda-se usar a versão mais recente. Verifique as perguntas frequentes para compatibilidade com JDK.

Nirmala
fonte