Oracle JDBC ojdbc6 Jar làm phụ thuộc Maven


103

Tôi dường như không thể yêu cầu Maven gói tệp ojdbc6.jar vào tệp chiến tranh của dự án của tôi. Tôi có nó hoạt động trong tệp POM khi chỉ định phụ thuộc trực tiếp cho các công cụ Hibernate. Nhưng nó sẽ không được đóng gói với tệp chiến tranh của dự án và do đó dự án của tôi sẽ không chạy trên Tomcat.

Tôi đã thử mọi giải pháp mà tôi có thể tìm thấy trên mạng, bao gồm cả những giải pháp được chỉ định cho câu hỏi này tại đây:

Tìm trình điều khiển Oracle JDBC trong kho lưu trữ Maven

Gần đây nhất, tôi đã làm như sau:

  1. Tải tệp jar xuống máy của tôi

  2. Chạy lệnh sau để cài đặt jar vào kho lưu trữ cục bộ của tôi:

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

    (Tôi cũng đã thử tất cả các loại biến thể của lệnh đó.)

  3. Cuối cùng, tôi đặt phụ thuộc vào tệp pom của mình:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Tôi chạy một bản dựng sạch, nhưng nó không thành công:

    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]

Tại sao điều này không hoạt động? Tôi sẵn sàng ném các bộ phận máy tính đắt tiền khắp phòng. Điều này đã lãng phí rất nhiều thời gian. (Cảm ơn bạn, Oracle. Chúng tôi đã trả lại cho bạn bao nhiêu?)

Có lẽ vì tôi đang sử dụng máy Mac?


6
Bạn có thể kiểm tra xem tệp ojdbc6-11.2.0.3.jarcó sẵn trong kho lưu trữ cục bộ của bạn tại đúng thư mục không?
Raghuram

1
Tệp jar dường như không bao giờ được sao chép vào kho lưu trữ. Chỉ là một loạt các tệp xuất hiện để tham chiếu đến nó. Tệp có cần được gọi chính xác như vậy không? Nó chỉ là ojdbc6.jar trong thư mục lib của tôi.
Marvo

15
Hừ! vì vậy mvn install:install-fileđã không hoạt động. Bạn nên cung cấp vị trí tuyệt đối của ojdbc6.jarhoặc chạy lệnh từ thư mục chứa nó. Tên tệp không phải là một vấn đề. Bạn có thể chạy với một -Xcờ để bạn có thể gỡ lỗi thông tin.
Raghuram

Có bất kỳ đầu ra khi bạn chạy install-file? Maven sẽ cho bạn biết nó cài đặt tệp ở đâu hoặc có bất kỳ lỗi nào không.
nwinkler

1
Một lưu ý không liên quan: Bạn nên xem xét việc sử dụng nhân bản kho lưu trữ (một cái gì đó như Nexus, Artifactory, Archiva, ...). Bạn có thể tải tệp lên đó và tệp sẽ có sẵn không chỉ cho bạn mà còn cho mọi người khác sử dụng cùng một máy nhân bản.
nwinkler

Câu trả lời:


136

Tốt hơn là thêm kho lưu trữ Maven mới (tốt hơn là sử dụng kho lưu trữ của riêng bạn) vào dự án của bạn thay vì cài đặt nó vào kho lưu trữ cục bộ của bạn.

Cú pháp 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>

Ví dụ về Grails:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'

3
Cuối cùng thì đó là những gì chúng tôi đã làm. Chúng tôi thiết lập một kho lưu trữ ở đây và tất cả các dự án của chúng tôi hiện đều sử dụng nó. Tuy nhiên, tôi nghĩ sẽ rất hữu ích nếu biết cách làm cả hai.
Marvo

3
Kho lưu trữ lds.org đó có hợp pháp không? Theo câu trả lời này thì đó là bất hợp pháp: stackoverflow.com/a/1074971/1415732
Alden

2
Tôi tự hỏi, nếu tôi cài đặt phụ thuộc vào kho lưu trữ của công ty mình, liệu nó có phạm luật không? Hay chỉ repo công khai là bất hợp pháp? Đó là lỗi của Oracle khi họ không có kho lưu trữ Maven công cộng cho các thư viện của họ. Tôi muốn đánh giá cao ai đó đang chia sẻ thư viện đó trong kho của họ (và nó luôn có thể truy cập được).
Ondrej Kvasnovsky

3
Ondrej: Theo hiểu biết của tôi, nó chỉ bất hợp pháp nếu kho lưu trữ là công khai. Công ty của tôi lưu trữ ojdbc trong một kho lưu trữ maven riêng (có tính nghệ thuật) theo cách bạn đề xuất.
Ray Myers

3
Tất nhiên là "tốt hơn" để thêm một số repo tùy ý vào dự án của bạn, vâng. Chà, điều này sai ở nhiều cấp độ
zb226

41

Đối với bất kỳ ai đọc bài đăng này trong tương lai, bạn không cần phải cd vào thư mục chứa jar. Dưới đây là những gì bạn cần làm -

Chuyển đến thư mục dự án của bạn từ nơi bạn có thể chạy các lệnh maven (Khi bạn thực hiện lệnh ls -ltr trong thư mục này, bạn sẽ thấy pom.xml)

Làm cái này -

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

Sau khi hoàn tất, bạn có thể thêm phần phụ thuộc vào pom.xml của mình, giống như thế này -

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>

3
Chỉ cần lưu ý: Sau khi làm theo các bước này, tôi vẫn gặp lỗi tương tự trong nhật thực cho đến khi tôi thực hiện Maven > Update Project. Sau đó, mọi thứ hoạt động tốt đẹp. Bước này có thể rõ ràng, nhưng tôi nghĩ rằng tôi sẽ thêm nó.
user12893298320392

2
... để thêm vào "bài viết xin chào người đọc trong tương lai". điều này không thành công khi chạy powershell, nhưng hoạt động như mong đợi khi chạy CMD-shell cửa sổ thông thường. Không có quyền hạn cho bạn!
phareim

Đối với những người đang cố gắng làm điều này trên windows, lời khuyên của phareim là vàng. Tôi đã nhận được điều này làm việc trên windows 7 chạy maven 3.3.3 bằng cách gõ lệnh mvn trong dấu nhắc lệnh. powershell liên tục gặp lỗi 'không tìm thấy pom'.
Quest Monger

Thứ tự được đề cập là quan trọng. Tôi đã thêm phần phụ thuộc đầu tiên rồi chạy lệnh mvn intsall, Lỗi không biến mất. Đã thử xóa phần phụ thuộc, lưu rồi thêm lại và lưu. Tất cả các lỗi được giải quyết (với điều kiện dự án của bạn là bộ t "xây dựng tự động")
Kailas

24

Câu trả lời đúng được cung cấp bởi Raghuram trong phần nhận xét cho câu hỏi ban đầu của tôi.

Vì bất kỳ lý do gì, việc trỏ "mvn install" đến đường dẫn đầy đủ của tệp ojdbc6.jar vật lý không hoạt động đối với tôi. (Hoặc tôi đã liên tục bật nó lên khi chạy lệnh, nhưng không có lỗi nào được đưa ra.)

cd-ing vào thư mục mà tôi giữ ojdb6.jar và chạy lệnh từ đó đã hoạt động lần đầu tiên.

Nếu Raghuram muốn trả lời câu hỏi này, tôi sẽ chấp nhận câu trả lời của anh ấy. Cảm ơn mọi người!


1
Cảm ơn @Raghuram và Marvo
spiderman

7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

để giải quyết vấn đề ORACLE JAR với Ứng dụng Spring,

Oracle JDBC ojdbc6 Jar làm phụ thuộc Maven

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`

Maven siêu kén chọn các phiên bản và không phải lúc nào cũng dễ đoán. Rất vui rằng phiên bản là 11.2.0 không phải 11.2.0.3
Michael Shopsin

5

Trước tiên, bạn cần tải xuống jar cụ thể từ trang web Oracle (ojdbc.jar phiên bản 11.2.0.3)

nếu bạn tải nó xuống C: \ filefolder

vào thư mục đó trong cmd prompt và cung cấp lệnh bên dưới, lệnh này sẽ cài đặt phần phụ thuộc, sau đó bạn có thể xây dựng dự án của mình.

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

2

Sau khi thực hiện

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

kiểm tra thư mục kho lưu trữ .m2 của bạn (/com/oracle/ojdbc6/11.2.0.3) để xem liệu ojdbc6.jar có tồn tại hay không. Nếu không kiểm tra cài đặt kho lưu trữ maven của bạn trong $ M2_HOME / conf / settings.xml


2

Cấu hình bên dưới phù hợp với tôi Tham khảo liên kết này để biết thêm chi tiết.

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

Đó là điều mới mẻ kể từ khi tôi đặt câu hỏi. Đẹp!
Marvo

2

Vì Oracle là sản phẩm được cấp phép, nên có vấn đề khi thêm trực tiếp phụ thuộc maven. Để thêm bất kỳ phiên bản nào của ojdbc.jar, bạn có thể thực hiện 2 bước dưới đây.

  1. Chạy lệnh dưới đây để cài đặt ojdbc.jar vào kho lưu trữ maven cục bộ.
/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

Điều này sẽ thêm phần phụ thuộc vào kho lưu trữ cục bộ.

  1. Bây giờ, thêm phần phụ thuộc vào tệp pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

Tôi đã làm theo lệnh dưới đây nó hoạt động:

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

Sau khi cài đặt, hãy kiểm tra xem jar đã được cài đặt đúng trên M2_repo của bạn chưa.


1

Tôi đã thử sử dụng phụ thuộc không có thẻ phiên bản và nó hoạt động tốt đối với tôi.

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

0

Thêm phụ thuộc sau trong pom.xml

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

0

Vào ổ C-> user-> PcName-> tìm .m2 và Paste file jar ojdbc đã tải về vào đó, Server sẽ tự động chọn.


-1

Trình điều khiển Oracle JDBC và các Chum đồng hành khác có sẵn trên Central Maven. Chúng tôi khuyên bạn nên sử dụng các phiên bản Oracle JDBC được hỗ trợ chính thức từ 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 và 19.7.0.0. Chúng có sẵn trên Kho lưu trữ Maven Trung tâm . Tham khảo Hướng dẫn Trung tâm Maven để biết thêm chi tiết.

Bạn nên sử dụng phiên bản mới nhất. Xem Câu hỏi thường gặp về khả năng tương thích với JDK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.