문제

Oracle JDBC 드라이버를 프로젝트에 종속성 (런타임 범위) -OJDBC14로 추가하고 싶습니다. mvnrepository 사이트에서 POM에 넣는 종속성은 다음과 같습니다.

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

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

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

  2. Maven이 사용할 수 있도록 어떻게 추가합니까?

도움이 되었습니까?

해결책

이 아티팩트가 포함 된 저장소 (있는 경우)를 어떻게 찾습니까?

불행히도 이진 라이센스로 인해 Oracle Driver Jar가있는 공개 저장소가 없습니다. 이것은 많은 종속성에서 발생하지만 Maven의 잘못은 아닙니다. 항아리가 포함 된 공공 저장소를 찾으면 불법이 될 수 있습니다.

Maven이 사용할 수 있도록 어떻게 추가합니까?

라이센스 이유로 추가 할 수없는 일부 항아리는 POM 입력 Maven Central Repo. 벤더가 선호하는 Maven 정보가 포함되어 있습니다.

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

... 그리고이 경우 파일을 다운로드 할 URLhttp://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html.

항아리를 다운로드 한 후에는 컴퓨터 저장소에 추가하여 (POM에서 GroupId, ArtifactID 및 버전을 가져 왔습니다) :

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 저장소가있는 경우 이 안내서 항아리를 업로드하는 데 도움이 될 수 있습니다.

다른 팁

어떤 이유로 든, 나는 위의 솔루션을 얻을 수 없었습니다. (여전히 할 수 없습니다.)

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

업데이트:이 솔루션은 최대 절전 모드 도구를 실행할 때 저에게 효과적입니다. 그러나 전쟁 파일을 구축하는 데는 효과가없는 것으로 보입니다. 대상 전쟁 파일에 ojdbc6.jar 파일이 포함되지 않습니다.

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

2) OJDBC6.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>

못 생겼지 만 나를 위해 일합니다.

전쟁 파일에 파일을 포함하려면 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 저장소에서 사용할 수 있습니다 (중앙에 있지 않음).

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

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

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

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

처럼 데이비드 내가 대답 한 시점에서 인용 한 라인은 더 이상 현재 (지금 쓰고있는 시점에) OTN 라이센스 계약 계약에 더 이상 참석하지 않았다고 언급했습니다. 10.2.0.3.0 등으로 이전 버전의 아티팩트에 대해서만이 답을 고려하십시오.

모두 Oracle Database JDBC 드라이버 아래에서 분배됩니다 OTN 라이센스 계약.

OTN 라이센스 계약을 읽으면이 라이센스 용어가 있습니다.

당신은 할 수 없습니다 :
...
- 응용 프로그램이 동반되지 않는 한 프로그램을 배포하십시오.
...

그렇기 때문에 공개 Maven 저장소에서 운전자 용기를 찾을 수없는 이유입니다. 단독으로 배포되기 때문에 라이센스 위반이 될 것입니다.

종속성 추가 :

<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이 사용하도록 어떻게 추가합니까?

위의 종속성을 만들기 위해 동의합니다. 빅토르 위고 누가 당신을 제안했는지 여기 항아리를 로컬 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 용기를 찾을 수없는 곳에 만 제한되지 않지만 설치 위치에도 제한됩니다!

사실로 귀하의 로컬 Maven 저장소는 개인이어야하며 공유되지 않아야합니다. 그것이 공유된다면, 그것은 작은 사람들이 당신의 지역 네트워크에 약간의 사람들에게 있어도 항아리가 단독으로 분배되는 일종의 분포 일 것이기 때문에 이것은 A를 나타냅니다. OTN 라이센스 계약 위반.

게다가 나는 당신을 생각합니다 Corporation Repository Manager에 JDBC JAR 설치를 피해야합니다. (와 같은 인공물 또는 연결점) 단일 아티팩트로서 설치된 경우 조직의 사람들에게만 해당되는 경우에도 여전히 배포되며 이것은 A를 나타냅니다. OTN 라이센스 계약 위반.

당신이 사용할 수있는 연결점 표준 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/; organisation 처 내 아이비 설정에서 외부 maven2 리포지토리로.

모두 좋은 소식! 마지막으로 Oracle의 공식 리포를 사용할 수 있습니다.https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-repository-without-ide-

일부 Oracle 제품은 Maven Artifacts를 로컬 저장소에 출판하는 지원을 지원합니다. 제품에는 아티팩트를 찾을 수있는 위치와 저장 장소가 포함 된 플러그인/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에서 OpenSource를 배송하고 Oracle과의 여러 이메일 대화 후에도 배포로 바이너리 JDBC 드라이버를 배송 할 수 있는지 확실하지 않았습니다. 내 라이센스가 OTN 용어와 호환되는지 여부와 관련된 문제는 운전자를 배송 할 수 없다고 제안했습니다. 아마도이 부분과 관련이있을 것입니다

(b) 각 라이센스 사용자가 본 계약의 조건과 일치하는 라이센스 약관에 동의 한 경우 고객에게 개발 한 응용 프로그램이있는 프로그램을 배포합니다.

따라서 독점/로컬 Maven 저장소에 드라이버를 합법적으로 게시하더라도 해당 아티팩트와 관련된 내용에 대한 제한이 여전히 있습니다. 전체 OTN 라이센스 파일과 함께 이진 형태로 드라이버를 배송하더라도 여전히 사용할 수 없으며 사용자가 내 소프트웨어를 사용하기 전에 Oracle 드라이버를 수동으로 다운로드하고 내 라이브러리 경로로 떨어 뜨려야한다는 것이 터무니없는 것 같습니다.

항아리를 제공하는 하나의 리포가 있습니다. SBT에서는 다음과 비슷한 분야를 추가합니다. "Oracle Driver Repo"at "http://dist.codehaus.org/mule/dependencies/maven2"

및 종속성 : "Oracle" % "OJDBC14" % "10.2.0.2"

Maven과 똑같이 할 수 있습니다. pom.xml 및 jar를 사용할 수 있습니다 (http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/).

NetBeans를 사용하는 경우 GOTO 종속성 및 수동으로 아티팩트를 설치하십시오. 다운로드 된 .jar 파일과 완료를 찾으십시오. Clean Build는 모든 문제를 해결합니다.

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

Continous Integration + 샘플에 대한 모든 설명을 찾아 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>

해결되었습니다

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

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

컴파일 시간에 다음 설정을 사용하여 Oracle Driver 다운로드

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

Grails 응용 프로그램 용 Oracle 드라이버를 찾지 못하는 문제를 해결해야합니다.


라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top