a

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


Tôi muốn thêm trình điều khiển jdbc oracle vào dự án của tôi là phụ thuộc (phạm vi thời gian chạy) - ojdbc14. Trong trang MVNrepository, sự phụ thuộc để đưa vào POM là:

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

tất nhiên điều này không hoạt động vì nó không nằm trong kho lưu trữ trung tâm được sử dụng bởi maven. 2 câu hỏi:

  1. Làm thế nào để tôi tìm thấy một kho lưu trữ (nếu có) có chứa thành phần này?

  2. Làm thế nào để tôi thêm nó để Maven sẽ sử dụng nó?


256
2017-07-02 14:55


gốc


maven-repository.com/artifact/com.oracle/ojdbc14 - Vadzim
ojdbc6 trong kho lưu trữ maven công khai: stackoverflow.com/questions/9898499/… - Vadzim


Các câu trả lời:


Làm thế nào để tôi tìm thấy một kho lưu trữ (nếu có) có chứa thành phần này?

Thật không may do giấy phép nhị phân không có kho lưu trữ công cộng với Oracle Driver JAR. Điều này xảy ra với nhiều phụ thuộc nhưng không phải lỗi của Maven. Nếu bạn tình cờ tìm thấy một kho lưu trữ công cộng có chứa JAR, bạn có thể chắc chắn rằng đó là bất hợp pháp.

Làm thế nào để tôi thêm nó để Maven sẽ sử dụng nó?

Một số JAR không thể thêm do lý do giấy phép có pom nhập vào Maven Central repo. Chỉ cần kiểm tra xem nó, nó chứa thông tin Maven ưa thích của nhà cung cấp:

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

... và URL để tải xuống tệp trong trường hợp này là http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html.

Một khi bạn đã tải xuống JAR, chỉ cần thêm nó vào kho lưu trữ máy tính của bạn với (lưu ý tôi đã kéo groupId, artifactId và phiên bản từ POM):

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

Tham số cuối cùng để tạo POM sẽ giúp bạn tiết kiệm từ cảnh báo pom.xml

Nếu nhóm của bạn có kho lưu trữ Maven cục bộ hướng dẫn này có thể hữu ích khi tải tệp JAR lên đó.


380
2017-07-02 15:12



Sẽ thật tuyệt nếu như oracle có thể tổ chức một repo maven với lọ của họ ... - AmanicA
@AmanicA, thật khó để sử dụng "Oracle" và "đẹp" trong cùng một câu ... - Daniel Serodio
Đối với OJDBC6: 1. mvn install: install-file -DgroupId = com.oracle -DartifactId = ojdbc6 -Dversion = 11.2.0.3 -Dpackaging = jar -Dfile = ojdbc6.jar -DgeneratePom = true 2. Thêm phần này vào pom.xml: <dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc6 </ artifactId> <phiên bản> 11.2.0.3 </ version> </ dependency> - oskarae
Tôi lang thang tại sao Oracle lại xấu đến mức không quan tâm đến tất cả các phán đoán công khai mà nó có. Nó là xấu ngay cả trong những điều nhỏ như sự sẵn có công cộng của các thư viện miễn phí của riêng họ. - Askar Kalykov
@AmanicA Theo stackoverflow.com/a/27943380/7677308, Oracle hiện đang lưu trữ một kho lưu trữ như vậy - SilverNak


Vì lý do gì đó, tôi không thể nhận được bất kỳ giải pháp nào ở trên để làm việc. (Vẫn không thể.)

Những gì tôi đã làm thay vào đó là bao gồm các jar trong dự án của tôi (blech) và sau đó tạo ra một "hệ thống" phụ thuộc cho nó chỉ ra đường dẫn đến jar. Nó có lẽ không phải là cách PHẢI để làm điều đó, nhưng nó hoạt động. Và nó giúp loại bỏ sự cần thiết cho các nhà phát triển khác trong nhóm (hoặc anh chàng thiết lập máy chủ xây dựng) để đặt cái lọ vào kho lưu trữ địa phương của họ.

CẬP NHẬT: Giải pháp này làm việc cho tôi khi tôi chạy các công cụ Hibernate. Nó không xuất hiện để làm việc để xây dựng tệp WAR, tuy nhiên. Nó không bao gồm tệp ojdbc6.jar trong tệp WAR đích.

1) Tạo một thư mục có tên "lib" trong thư mục gốc của dự án của bạn.

2) Sao chép tập tin ojdbc6.jar ở đó (bất kỳ cái bình nào được gọi.)

3) Tạo một phụ thuộc trông giống như sau:

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

Xấu xí, nhưng làm việc cho tôi.

Để bao gồm các tệp trong tệp chiến tranh, hãy thêm phần sau vào pom của bạn

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

46
2018-03-19 23:10



Tôi thực sự thích giải pháp này vì nó không yêu cầu thiết lập nexus, thường chỉ có 1 hoặc 2 lọ như thế này trong một dự án, và nó đơn giản hóa các nhà phát triển khác thiết lập trên dự án bởi vì họ không phải cập nhật local .m2 env của họ . (oracle là ứng cử viên chính cho điều này). Ngoài ra, nếu bạn cập nhật nguồn repo của bạn với một lọ oracle mới, tất cả các nhà phát triển sẽ có được nó trên kéo tiếp theo. - Q Boiler
đã thêm thông tin về cách thêm tệp jar vào tệp WAR - ojblass
Điều này làm việc cho tôi - codingcraftsman.wordpress.com/2015/04/20/… - Ashley Frieze
@Marvo, tôi đã thử nhiều giải pháp và đây là giải pháp tốt nhất, cảm ơn rất nhiều - Mahmoud Saleh


Tải xuống bình và đặt nó vào dự án của bạn src/lib. Bây giờ bạn có thể sử dụng plugin trình cài đặt maven.

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

Bây giờ bạn chỉ phải thực thi mvn clean một lần và lib oracle được cài đặt trong kho lưu trữ maven cục bộ của bạn.


27
2018-04-05 08:53



Câu hỏi đã được trả lời và chấp nhận - sidgate
thay thế rất hữu ích! - Rakesh Waghela
Điều này giải quyết probleem của tôi. - LoBo


Oracle hiện đang trưng bày kho lưu trữ maven tại maven.oracle.com Tuy nhiên bạn cần phải được xác thực.

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

Theo nhận xét trong bài đăng trên blog, trình điều khiển ojdbc sẽ có sẵn ở các tọa độ sau:

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

22
2018-01-14 12:50



Điều này không hoạt động. Đó là một chút rắc rối. Bạn phải chắc chắn rằng bạn có được tạo phẩm đúng, tạo một tài khoản Oracle, thêm một vài thứ vào tệp settings.xml và tệp pom.xml của bạn và thêm tên người dùng và mật khẩu cho tài khoản đó vào tệp settings.xml. Oracle cần sửa chữa cấp phép của họ vì đây vẫn là một PITA. - ggb667
Yêu cầu xác thực để nhận các hiện vật maven nghe có vẻ vô lý. - Tuelho
Nếu bạn phải vì lý do nào đó, hãy sử dụng ojdbc6 (tức là bạn bị mắc kẹt trên Java 6), sau đó thay đổi artifactId thành ojdbc6 và thay đổi phiên bản thành 12.1.2-0-0. - dcsohl
Tôi đang cố gắng tìm bản phát hành 11g (11.2.0.4) cho java 6 ... có ai tìm thấy không? - jpfreire
Cập nhật : Nailed nó: cho các trình điều khiển jdbc cũ hơn, bạn cũng phải thay đổi 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


Hãy thử với:

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

17
2018-01-04 04:42



Điều này nên được chấp nhận. - Denees
Ngoại trừ điều này là vi phạm giấy phép Oracle. - Ben L.
Bạo lực của giấy phép, nhưng hoạt động. Tôi sử dụng nó cho mục đích giáo dục (không phải trong sản xuất). Nó cũng chứa trình điều khiển 12c <dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc7 </ artifactId> <phiên bản> 12.1.0.2 </ version> </ dependency> - Svetlin Nakov
Ngoài vấn đề cấp phép, bạn không nên thêm kho không xác định trong pom của bạn. Điều này trình bày một rủi ro bảo mật và cũng có thể đe dọa xây dựng của bạn. Bạn có thể tin tưởng bao nhiêu vào kho lưu trữ từ Giáo Hội Các Thánh Hữu Ngày Sau của Chúa Giê Su Ky Tô? Những gì đảm bảo họ cung cấp rằng kho lưu trữ là đáng tin cậy, an toàn và an toàn, và rằng họ sẽ không gây rối với nó? Điều gì sẽ xảy ra nếu chúng bị tấn công và xuất bản phiên bản độc hại của trình điều khiển ojdbc hoặc bất kỳ phần nào khác của các phụ thuộc của bạn? - Didier L


Trình điều khiển Oracle JDBC bây giờ đã có trong Kho lưu trữ Oracle Maven (không phải ở miền Trung).

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

Kho lưu trữ Oracle Maven yêu cầu đăng ký người dùng. Hướng dẫn có thể được tìm thấy trong:

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


15
2018-02-16 15:09





1. Làm cách nào để tìm một kho lưu trữ (nếu có) chứa phần tạo tác này?

Tất cả các Trình điều khiển JDBC cơ sở dữ liệu Oracle được phân phối theo Thỏa thuận cấp phép OTN.

Nếu bạn đọc Thỏa thuận cấp phép OTN, bạn tìm thấy điều khoản cấp phép này:

Bạn có thể không:
  ...
  - phân phối các chương trình trừ khi đi kèm với các ứng dụng của bạn;
  ...

vì vậy đó là lý do tại sao bạn không thể tìm thấy bình của người lái xe trong bất kỳ Kho lưu trữ Maven nào, bởi vì nó sẽ được phân phối một mình, và nếu nó xảy ra nó sẽ là một sự vi phạm giấy phép.

Thêm phụ thuộc:

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

(hoặc bất kỳ phiên bản mới hơn) làm cho Maven tải xuống ojdbc14-10.2.0.3.0.pom chỉ, và trong pom bạn có thể đọc:

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

thông báo cho bạn về Giấy phép OTN.

2. Làm thế nào để thêm nó để Maven sẽ sử dụng nó?

Để thực hiện các công việc phụ thuộc ở trên, tôi đồng ý với victor hugo đang đề xuất bạn đây để tự cài đặt jar vào kho lưu trữ Maven cục bộ của bạn ( .m2 thư mục) bằng cách chạy:

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

nhưng tôi muốn thêm rằng thời hạn cấp phép ở trên không chỉ giới hạn ở nơi bạn không thể tìm thấy jar JDBC, nhưng nó cũng giới hạn nơi bạn cài đặt nó!

Trong thực tế kho lưu trữ Maven cục bộ của bạn phải là riêng tư và không được chia sẻ bởi vì nếu nó được chia sẻ, nó sẽ là một loại phân phối trong đó bình được phân phối một mình, ngay cả khi cho một nhóm nhỏ người vào mạng cục bộ của bạn, và điều này đại diện cho Vi phạm Thỏa thuận Cấp phép OTN.

Hơn nữa tôi nghĩ bạn nên tránh cài đặt jar JDBC trong trình quản lý kho lưu trữ của công ty bạn (nhu la Artifactory hoặc là Nexus) như là một tạo tác duy nhất bởi vì nếu nó được cài đặt, nó sẽ vẫn được phân phối một mình, ngay cả khi chỉ cho những người trong tổ chức của bạn, và điều này đại diện cho Vi phạm Thỏa thuận Cấp phép OTN.


14
2018-05-18 14:48





Bạn có thể dùng Nexus để quản lý các phụ thuộc bên thứ 3 cũng như các phụ thuộc trong kho lưu trữ maven chuẩn.


12
2017-12-31 20:35



Nexus sẽ giúp đỡ như thế nào trong trường hợp này? Nó sẽ tải xuống phần tạo tác từ đâu? - ziggy
Câu trả lời chưa hoàn chỉnh, nhưng tôi suy nghĩ @ Michael Munsey đang nói để tạo một kho lưu trữ nội bộ / công ty để tải xuống. - Randolph
Vâng. Thiết lập Nexus, sau đó tải xuống các lọ bằng tay và đặt chúng vào Nexus để các bản dựng maven liên tiếp có thể kéo nó từ bản sao Nexus của bạn. - Michael Munsey
@MichaelMunsey Nói chung đề xuất một người quản lý kho lưu trữ như Artifactory hoặc là Nexus sẽ là một câu trả lời hay, nhưng trong trường hợp cụ thể của các trình điều khiển cơ sở dữ liệu Oracle JDBC, nó không phải là một tốt bởi vì, ngay cả khi nó làm cho mọi thứ hoạt động, nó không may khiến bạn gặp rắc rối do vi phạm về giấy phép này. - taringamberini


Cho đến nay, nó không thể sử dụng kho lưu trữ maven. Tôi đang sử dụng ivy như là công cụ quản lý phụ thuộc, nhưng cũng sử dụng kho lưu trữ ibiblio của maven2. Và điều này làm việc cho ivy:

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

Sự phụ thuộc của Maven2 có thể giống như thế:

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

Lưu ý rằng tôi xác định http://download.java.net/maven/2/ và http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext] như repo maven2 bên ngoài trên các thiết lập ivy của tôi.


6
2018-06-23 07:43



Đây là một câu trả lời tuyệt vời - bạn chỉ có thể thêm repo: mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2 pom.xml của bạn để làm việc này. - Grouchal
Nó có thể hoạt động, nhưng nó có hợp pháp không? Như đã giải thích ở một trong những câu trả lời khác ở đây, Oracle không cho phép trình điều khiển được phân phối bởi bất kỳ ai trừ chúng và chúng không cung cấp kho lưu trữ Maven. Nếu bạn sử dụng giải pháp này, đôi khi trình điều khiển có thể được gỡ bỏ khỏi kho lưu trữ khi bạn ít mong đợi nó nhất. - L S
@Grouchal Câu trả lời này làm cho mọi thứ hoạt động nhưng, thật không may, khiến bạn gặp rắc rối do vi phạm về giấy phép này. - taringamberini
@ Grouchal ... không có http://maven.ibiblio.org/maven/oracle cũng không http://maven.ibiblio.org/maven/com.oracle. - david


Tin tốt tất cả mọi người! Cuối cùng chúng ta có thể sử dụng repo chính thức của Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides


3
2018-02-24 09:32



Tin tốt, nhưng cài đặt bảo mật quá phức tạp. Nó dễ dàng hơn để tải xuống JAR trong thư mục "lib" như chúng ta đã làm vào năm 1999. - Svetlin Nakov
nó hoạt động! Thiết lập bảo mật không quá phức tạp và nó được ghi lại đầy đủ, bạn chỉ phải thực hiện một lần. Chắc chắn thực tế là bạn phải hardcode (mật mã) mật khẩu của bạn ở đâu đó là một nỗi đau, tôi cũng đặt câu hỏi quyết định Oracle để "bảo vệ" truy cập vào kho "công cộng" của họ, nó làm cho không có ý nghĩa từ góc độ phát triển. - PierluigiVernetto


Một số sản phẩm của Oracle hỗ trợ xuất bản các tạo tác maven vào một kho lưu trữ cục bộ. Các sản phẩm có một thư mục plugin / maven chứa các mô tả nơi tìm thấy các tạo tác đó và nơi lưu trữ chúng. Có một Plugin từ Oracle sẽ thực sự tải lên.

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

Một trong những sản phẩm có thể vận chuyển OJDBC theo cách này là WLS, nó sử dụng tọa độ khá kỳ lạ:

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

1
2018-04-04 11:47



... và trong khi đó, repo cũng có sẵn công khai: blogs.oracle.com/WebLogicServer/entry/… - eckes