Programing

Maven 저장소에서 Oracle JDBC 드라이버 찾기

lottogame 2020. 3. 23. 08:00
반응형

Maven 저장소에서 Oracle JDBC 드라이버 찾기


의존성 (런타임 범위)-ojdbc14로 oracle jdbc 드라이버를 프로젝트에 추가하고 싶습니다. MVNrepository 사이트에서 POM에 대한 종속성은 다음과 같습니다.

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

물론 이것은 maven이 사용하는 중앙 저장소에 없기 때문에 작동하지 않습니다. 두 가지 질문 :

  1. 이 이슈가 포함 된 저장소 (있는 경우)는 어떻게 찾습니까?

  2. Maven에서 사용하도록 추가하려면 어떻게합니까?


이 이슈가 포함 된 저장소 (있는 경우)는 어떻게 찾습니까?

불행히도 바이너리 라이센스로 인해 Oracle Driver JAR이 포함 된 공용 저장소가 없습니다. 이것은 많은 의존성에서 발생하지만 Maven의 잘못이 아닙니다. JAR가 포함 된 공용 저장소를 찾으면 불법임을 확신 할 수 있습니다.

Maven에서 사용하도록 추가하려면 어떻게합니까?

라이센스 이유로 인해 추가 할 수없는 일부 JAR Maven Central 저장소pom 항목이 있습니다. 벤더가 선호하는 Maven 정보가 포함되어 있는지 확인하십시오.

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

...이 경우 http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html 인 파일을 다운로드 할 URL 입니다.

JAR을 다운로드하면 JAR을 컴퓨터 저장소에 추가하십시오 (POM에서 groupId, artifactId 및 version을 가져 왔습니다).

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

POM 생성을위한 마지막 매개 변수는 pom.xml 경고에서 저장됩니다.

팀에 로컬 Maven 저장소가있는 경우이 안내서 는 JAR을 업로드하는 데 도움이 될 수 있습니다.


어떤 이유로 든 위의 솔루션을 사용할 수 없었습니다. (아직도 할 수 없습니다.)

대신에 내 프로젝트 (표백제)에 항아리를 포함시킨 다음 항아리에 대한 경로를 나타내는 "시스템"종속성을 작성했습니다. 아마도 올바른 방법은 아니지만 작동합니다. 또한 팀의 다른 개발자 (또는 빌드 서버를 설정하는 사람)가 항아리를 로컬 리포지토리에 넣을 필요가 없습니다.

업데이트 :이 솔루션은 최대 절전 모드 도구를 실행할 때 효과적입니다. 그러나 WAR 파일을 빌드하는 데는 작동하지 않는 것 같습니다. 대상 WAR 파일에 ojdbc6.jar 파일이 포함되어 있지 않습니다.

1) 프로젝트 루트에 "lib"라는 디렉토리를 만듭니다.

2) ojdbc6.jar 파일을 jar 파일에 복사하십시오.

3) 다음과 같은 종속성을 작성하십시오.

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

못생긴,하지만 나를 위해 작동합니다.

war 파일에 파일을 포함하려면 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>

항아리를 다운로드하여 프로젝트에 배치하십시오 src/lib. 이제 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>

이제 mvn clean한 번만 실행 하면 oracle lib가 로컬 maven 저장소에 설치됩니다.


Oracle은 이제 maven.oracle.com에서 maven 저장소를 공개하고 있지만 인증을 받아야합니다.

https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle을 참조 하십시오.

블로그 게시물의 의견에 따르면 ojdbc 드라이버는 다음 좌표에서 사용할 수 있어야합니다.

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

시도해보십시오 :

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

Oracle JDBC 드라이버는 이제 Oracle Maven Repository (중앙 아님)에서 사용 가능합니다.

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

Oracle Maven Repository에는 사용자 등록이 필요합니다. 지침은 다음에서 찾을 수 있습니다.

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

2019-10-03 업데이트

Spring Boot가 이제 Maven Central 의 Oracle JDBC Driver를 사용하고 있음을 알았습니다 .

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

Gradle 사용자의 경우 다음을 사용하십시오.

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

사용자 등록이 필요 없습니다.


1.이 이슈가 포함 된 저장소 (있는 경우)를 어떻게 찾을 수 있습니까?

으로 다비즈는 내가 대답 할 때 인용 라인 I 댓글을 달았습니다 내가 링크 OTN 라이센스 계약의 계약을 (내가 지금 쓰고있는 시점에서) 현재에 더 이상 존재하지 않는다. 이 답변은 10.2.0.3.0 등과 같이 이전 버전의 아티팩트에만 적용하십시오.

모든 Oracle Database JDBC 드라이버OTN 라이센스 계약에 따라 배포됩니다 .

OTN 사용권 계약을 읽은 경우이 사용권 조항이 있습니다.

: 당신은 할 수도
...
- 응용 프로그램을 동반하지 않는 한 프로그램을 배포;
...

그렇기 때문에 공용 Maven Repository에서 드라이버의 jar 파일을 찾을 수 없습니다. 단독으로 배포되기 때문에 라이센스 위반 일 수 있습니다.

의존성 추가하기 :

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

(또는 이후 버전) Maven 다운로드 ojdbc14-10.2.0.3.0.pom만 가능하며 해당 pom에서 다음을 읽을 수 있습니다.

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

OTN 라이센스에 대해 알려줍니다.

2. Maven이 사용하도록 추가하려면 어떻게합니까?

위의 의존성을 만들기 위해 나는 동의 작품 휴고 빅터 을 제안했다 여기에 해당 지역의 메이븐 저장소합니다 (로 단지 설치를 수동으로 .m2실행하여 디렉토리) :

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

그러나 위의 라이센스 조건 은 JDBC jar를 찾을 수없는 위치 만 제한하지 않으며 설치 위치도 제한 한다고 덧붙이고 싶습니다 !

실제로 로컬 Maven 저장소는 비공개이어야하며 공유되어서는 안됩니다. 공유 된 경우 작은 그룹의 사람들에게 로컬 영역 네트워크에있는 경우에도 jar이 단독으로 배포되는 일종의 배포 일 것입니다. OTN 라이센스 계약 위반 .

또한 회사 저장소 관리자 (예 : Artifactory 또는 Nexus )에 JDBC jar을 단일 아티팩트로 설치하지 않아야한다고 생각합니다. 설치 된 경우 조직의 사람들에게만 배포 되어도 여전히 단독으로 배포되므로 이것이 나타납니다. OTN 라이센스 계약 위반 .


Nexus사용 하여 표준 Maven 리포지토리의 종속성 및 타사 종속성을 관리 할 수 있습니다 .


지금까지는 maven 저장소를 사용할 수 없습니다. ivy를 종속성 관리 도구로 사용하고 있지만 maven2의 ibiblio 리포지토리도 사용합니다. 그리고 이것은 아이비를 위해 일하고 있습니다 :

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

Maven2의 종속성은 다음과 같습니다.

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

공지 난 것으로 정의 http://download.java.net/maven/2/http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [기업] / [모듈] / [ 개정] / [아티팩트]-[개정]. [ext] 는 내 아이비 설정에서 외부 maven2 repos로 사용됩니다.


모두 좋은 소식입니다! 마지막으로 오라클의 공식 저장소를 사용할 수 있습니다 : https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides


일부 Oracle 제품은 로컬 저장소에 maven 아티팩트 게시를 지원합니다. 제품에는 해당 아티팩트를 찾는 위치 및 저장할 위치에 대한 설명이 포함 된 plugin / maven 디렉토리가 있습니다. 실제로 업로드 할 Oracle의 플러그인이 있습니다.

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

이러한 방식으로 OJDBC를 제공 할 수있는 제품 중 하나는 WLS이며, 매우 이상한 좌표를 사용합니다.

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

LGPLv2로 오픈 소스를 제공하고 Oracle과 여러 번 이메일을 나눈 후에도 바이너리 JDBC 드라이버를 배포 할 수 있는지 여부가 확실하지 않았습니다. 라이센스가 OTN 약관과 호환되는지 여부와 관련된 문제로 인해 드라이버 배송이 허용되지 않았다고 제안했습니다. 이 부분과 관련이있을 수 있습니다

(b) 귀하가 개발 한 응용 프로그램과 함께 프로그램을 고객에게 배포하는 경우 해당 라이센스 사용자가 본 계약 조건과 일치하는 라이센스 조건에 동의하는 경우

따라서 독점 / 로컬 메이븐 리포지토리에 드라이버를 합법적으로 게시 할 수 있다고해도 해당 아티팩트로 수행 할 수있는 작업에는 여전히 제한이 있습니다. 전체 OTN 라이센스 파일과 함께 이진 형식으로 드라이버를 제공하더라도 여전히 사용할 수 없으며 사용자가 수동으로 Oracle 드라이버를 다운로드하여 내 라이브러리 경로에 놓아 소프트웨어를 사용하도록 강요해야합니다.


항아리를 제공하는 저장소가 하나 있습니다. SBT에서 " http://dist.codehaus.org/mule/dependencies/maven2 "에 "oracle driver repo"와 비슷한 리졸버를 추가 하십시오 .

및 종속 : "oracle"% "ojdbc14"% "10.2.0.2"

maven으로도 똑같이 할 수 있습니다. pom.xml 및 jar을 사용할 수 있습니다 ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).


Netbeans를 사용하는 경우 종속성으로 이동하여 아티팩트를 수동으로 설치하십시오. 다운로드 한 .jar 파일을 찾으십시오. 깨끗한 빌드는 모든 문제를 해결합니다.


Maven Project 에서 Oracle JDBC 드라이버를 사용하기위한 Github 간단한 샘플 프로젝트를 찾을 수 있습니다 .

지속적인 통합 + 샘플에 대한 모든 설명을 찾아 Travis-CI에서 실행할 수 있습니다.

데모


의존성

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

시험

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

제 경우에는 버전 종속성 (10.2.0.4) 아래에 이것을 추가 한 후에 저에게 효과적입니다. 이 버전 10.2.0.3.0을 추가 한 후 리포지토리 경로에 .jar 파일이 없기 때문에 작동하지 않습니다.

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

해결

  • 오류를 해결하려면 다음 설정을 수행하십시오

이 저장소는 Oracle 10.0.3.0 종속 항목을 찾을 수 있어야합니다 (이 설정은 Buildconfig.groovy에서 수행해야합니다. grails.project.dependency.resolver = "ivy"// 또는 ivy

또한 컴파일 시간 Oracle 드라이버 다운로드에 다음 설정을 사용하십시오.

런타임 "com.oracle:ojdbc:10.2.0.3.0"

Grails 애플리케이션 용 Oracle 드라이버를 찾지 못하는 문제를 해결해야합니다.


참고 URL : https://stackoverflow.com/questions/1074869/find-oracle-jdbc-driver-in-maven-repository

반응형