111

I cannot seem to get Maven to bundle the ojdbc6.jar file into my project's war file. I have it working within the POM file when specifying a dependency directly for Hibernate tools. But it won't get bundled with the project's war file, and therefore my project won't run on Tomcat.

I have tried every solution I can find out there on the net, including those specified for this question here:

Find Oracle JDBC driver in Maven repository

Most recently, I did the following:

  1. Download the jar file to my machine

  2. Run the following command to install the jar into my local repository:

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

    (I've tried all kinds of variants of that command, too.)

  3. Finally, I put the dependency into my pom file:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
    
  4. I run a clean build, but it fails:

    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]
    

Why doesn't this work? I'm ready to throw expensive computer parts across the room. This has wasted so much time. (Thank you, Oracle. How much did we pay you again?)

Is it because I'm on a Mac, perhaps?

Community
  • 1
  • 1
Marvo
  • 17,845
  • 8
  • 50
  • 74
  • 6
    Can you check if the file `ojdbc6-11.2.0.3.jar` is available in your local repository at the correct folder? – Raghuram Mar 28 '12 at 04:48
  • 1
    The jar file never seems to get copied to the repository. Just a bunch of files that appear to reference it. Does the file need to be called exactly that? It's just ojdbc6.jar in my lib directory. – Marvo Mar 28 '12 at 05:32
  • 16
    Hmm! so `mvn install:install-file` has not worked. You should give absolute location of `ojdbc6.jar` or run the command from the folder that contains it. The file name is not a problem. You could run with a `-X` flag so that you can debug info. – Raghuram Mar 28 '12 at 05:40
  • Is there any output when you run `install-file`? Maven should tell you where it installs the file to or whether there were any errors. – nwinkler Mar 28 '12 at 06:33
  • 1
    As an unrelated note: You should look into using a repository mirror (something like Nexus, Artifactory, Archiva, ...). You could upload the file there and it would be available not only for you, but for everybody else using the same mirror too. – nwinkler Mar 28 '12 at 06:34
  • I'm assuming putting Oracle's jars in someone else's repository would, at the very least, result in them taking them out, no? Otherwise, Oracle would host their jars in a repository like everyone else. – Marvo Mar 28 '12 at 06:56
  • Well, it appears that Raghuram had it: running the "mvn install" step from the directory where I was keeping the ojdbc6.jar. I had been saying -Dfile=~/lib/ojdb6.jar. When I cd'ed into the lib directory and ran the command from there, the jar file appeared in the repository. (In my example command in the original posting, I removed the reference to ~/lib/ to simplify my question.) – Marvo Mar 28 '12 at 17:39
  • Raghuram, if you'd like to make your response an answer, I'll gladly accept it. Thank you! And thanks everyone for the discussion that helped me diagnose this problem. – Marvo Mar 28 '12 at 17:40
  • Returning a while later to report that my team did ultimate set up a local repository. I think we went with Artifactory or something like that. – Marvo Jul 12 '12 at 21:46

15 Answers15

137

It is better to add new Maven repository (preferably using your own artifactory) to your project instead of installing it to your local repository.

Maven syntax:

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

Grails example:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'
Ondrej Kvasnovsky
  • 4,592
  • 3
  • 30
  • 40
  • 3
    Ultimately that's what we did. We set up a repository here, and all of our projects now use it. I think it's useful to know how to do both, however. – Marvo Nov 07 '12 at 23:31
  • 3
    Is that lds.org repository legal? According to this answer it is illegal: http://stackoverflow.com/a/1074971/1415732 – Alden Feb 10 '14 at 19:51
  • 2
    I wonder, if I would install dependency to my company repository, would it be illegal too? Or only public repos are illegal? It is Oracle's fault that they do not have public Maven repository for their libraries. I would rather appreciate somebody is sharing that library in their repository (and it is constently accessible). – Ondrej Kvasnovsky Feb 11 '14 at 08:43
  • 3
    Ondrej: In my understanding it's only illegal if the repository is public. My company hosts ojdbc in a private maven repo (artifactory) in just the way you suggest. – Ray Myers Apr 26 '14 at 17:02
  • 3
    Of course it's "better" to add some arbitrary repo to your project, yeah. Wow, this is wrong on so many levels – zb226 Apr 08 '16 at 14:41
  • @zb226: when that repository is internal and controlled by you or your organization, then yes, it is a very excellent idea. – Ben Madsen Jun 28 '16 at 23:47
  • 1
    @BenMadsen: I can't seem to find the "internal" or "controlled by you (...)" parts in this answer. Apart from that, you're right of course. That's why I was talking about "some arbitrary" repo. – zb226 Jul 11 '16 at 09:18
  • great, however Oracle has a public Maven repository https://docs.oracle.com/middleware/1213/core/MAVEN/config_maven_repo.htm#MAVEN9016 , although you have to take extra (painful and totally unjustifiable ) steps to configure it – Pierluigi Vernetto Oct 28 '17 at 08:58
  • 1
    Yeah, best use the mvn repo of a "trusted" church ;) – Gandalf Jan 05 '18 at 10:17
  • 1
    Not sure how happy I'd be using the mormons' nexus server. Weird they have one though. – CJDownUnder Oct 19 '20 at 23:49
46

For anyone reading this post in the future, you don't need to cd to the directory where the jar is present. Here is what you need to do -

Go to your project folder from where you can run maven commands (When you do an ls -ltr in this folder, you should see pom.xml)

Do this -

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

Once this is done, you can add the dependency in your pom.xml, something like this -

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
rickygrimes
  • 2,637
  • 9
  • 46
  • 69
  • 3
    Just a note: After following these steps, I still had the same error in eclipse until I performed `Maven > Update Project`. Then everything worked beautifully. This step might be obvious, but I figured I would add it. – user12893298320392 Jul 27 '15 at 15:52
  • 2
    ... to add to the "hello future reader post". this failed running powershell, but worked as expected running the ordinary windows CMD-shell. No powershell for you! – phareim Sep 04 '15 at 11:38
  • for people trying to do this on windows, phareim's advice is gold. i got this working on windows 7 running maven 3.3.3 by typing the mvn command in command prompt. powershell kept throwing 'pom not found' error. – Quest Monger Oct 25 '15 at 01:42
  • The order mentioned is important. I had added the dependency first then running the mvn intsall command, The error didn't disappear. Tried removing the dependency, save and then add it back again and save. All errors resolved (provided your project is set t "build automatically") – Kailas Jun 23 '17 at 06:31
  • 1
    For IntelliJ, make sure you File > Ivalidate Caches / Restart – CJDownUnder Oct 19 '20 at 23:50
24

The correct answer was supplied by Raghuram in the comments section to my original question.

For whatever reason, pointing "mvn install" to a full path of the physical ojdbc6.jar file didn't work for me. (Or I consistently repeatedly flubbed it up when running the command, but no errors were issued.)

cd-ing into the directory where I keep ojdb6.jar and running the command from there worked the first time.

If Raghuram would like to answer this question, I'll accept his answer instead. Thanks everyone!

Marvo
  • 17,845
  • 8
  • 50
  • 74
8
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

to resolve the ORACLE JAR issue with the Spring Application,

Oracle JDBC ojdbc6 Jar as a Maven Dependency

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`
Nicolás Alarcón Rapela
  • 2,714
  • 1
  • 18
  • 29
5

First you need to download the particular jar from Oracle site (ojdbc.jar version 11.2.0.3)

if you download it to C:\filefolder

go to that directory in cmd prompt and provide the below command.It will install the dependency.Then you can build your project.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true
shermi
  • 149
  • 1
  • 4
2

After executing

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

check your .m2 repository folder (/com/oracle/ojdbc6/11.2.0.3) to see if ojdbc6.jar exists. If not check your maven repository settings under $M2_HOME/conf/settings.xml

eebbesen
  • 5,070
  • 8
  • 48
  • 70
2

Below config worked for me. Refer this link for more details.

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>
Barani r
  • 2,119
  • 1
  • 25
  • 24
2

Since Oracle is the licensed product, there are issue in adding maven dependency directly. To add any version of the ojdbc.jar, below 2 steps could do.

  1. Run the below command to install ojdbc.jar into local maven repository.
/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

This will add the dependency into local repository.

  1. Now, add the dependency in the pom file
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

Mohamed
  • 75
  • 10
2

I have tried using the dependency without version tag and its worked fine for me.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>
Veswanth
  • 1,061
  • 9
  • 22
1

I followed below command it worked:

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

After installation check that jar is installed correctly on your M2_repo.

Fernando Nogueira
  • 1,302
  • 1
  • 14
  • 22
kuser699
  • 11
  • 1
1

Public: https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6/11.2.0.4

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>
Alisson Gomes
  • 1,029
  • 14
  • 30
  • Does that still require a password? I spent a month one afternoon trying to get that working with a password. And that didn't even account for needing to have it accessible from a build server. – Marvo Jan 26 '21 at 04:20
  • 1
    No, is public, configure maven dependency it's all. – Alisson Gomes Jan 26 '21 at 13:10
0

Add Following dependency in pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>
0

Go to the C drive->user->PcName->find .m2 and Paste the downloaded ojdbc jar file there, Server will automatically pick this.

0

For Ubuntu Issue

In ubuntu .m2\ folder is difficult to find and difficult put jar into repository ,So when we put command of Step 1 in Command Prompt, then it create ojdbc7 jar into local repository.

Step 1: Go to any location like /home/user/Documents open terminal and put this command

Command

mvn install:install-file -Dfile=path_of_downloaded_jar/ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2.0 -Dpackaging=jar -X

Step 2: Put this dependency in pom.xml
Dependency

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

Step 3: Update maven.

Please note:

You can change versions of ojdbc like ojdbc6/7/8 according your requirement.

-1

Oracle JDBC drivers and other companion Jars are available on Central Maven. We suggest to use the official supported Oracle JDBC versions from 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0, and 19.7.0.0. These are available on Central Maven Repository. Refer to Maven Central Guide for more details.

It is recommended to use the latest version. Check out FAQ for JDK compatibility.

Nirmala
  • 1,278
  • 1
  • 10
  • 11