403禁止从Oracle存储库获取jdbc驱动程序

时间:2017-10-29 20:16:31

标签: java oracle gradle jdbc

我想在编译时下载odjbc7.jar,以便我可以在Travis CI中运行所有测试。我在我的gradle.properties中添加了一个设置,以便它只下载用于构建的jar。

我的工具用户将自行提供驱动程序,以免违反Oracles许可协议。

我在网上找到的所有解决方案都回答了这个问题,指出一个本地jar不适用于我的CI构建或其他想要构建应用程序的人(我不能将ojdbc jar作为一部分分发)我的存储库)。

以下是我build.gradle的相关部分, 我的gradle.properties中有属性 mavenOracleUsername mavenOraclePassword (我已经在Oracle单点登录网站上检查了这些属性是正确的):

def oracleUsername = hasProperty('mavenOracleUsername') ? mavenOracleUsername : System.getenv('mavenOracleUsername')
def oraclePassword = hasProperty('mavenOraclePassword') ? mavenOraclePassword : System.getenv('mavenOraclePassword')

repositories {
    jcenter()

    maven {
        url "https://www.oracle.com/content/secure/maven/content"
//        url "https://maven.oracle.com"
        credentials {
            username "${oracleUsername}"
            password "${oraclePassword}"
        }
    }
}

...

dependencies {
    compile group: 'com.oracle.jdbc', name: 'ojdbc7', version: '12.1.0.2'
}

当我运行构建时,我收到以下错误:

Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not resolve com.oracle.jdbc:ojdbc7:12.1.0.2.
  Required by:
      project :
   > Could not resolve com.oracle.jdbc:ojdbc7:12.1.0.2.
      > Could not get resource 'https://www.oracle.com/content/secure/maven/content/com/oracle/jdbc/ojdbc7/12.1.0.2/ojdbc7-12.1.0.2.pom'.
         > Could not GET 'https://www.oracle.com/content/secure/maven/content/com/oracle/jdbc/ojdbc7/12.1.0.2/ojdbc7-12.1.0.2.pom'. Received status code 403 from server: Forbidden

如果我更改凭据,我会得到401响应,如果我更改了jar的版本,则会在存储库中找不到错误。

1 个答案:

答案 0 :(得分:2)

我发现解决方案是将驱动程序的版本升级到ojdbc8

此链接有助于:

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

我的build.gradle现在看起来像:

def oracleUsername = hasProperty('mavenOracleUsername') ? mavenOracleUsername : System.getenv('mavenOracleUsername')
def oraclePassword = hasProperty('mavenOraclePassword') ? mavenOraclePassword : System.getenv('mavenOraclePassword')

repositories {
    jcenter()

    maven {
        url "https://www.oracle.com/content/secure/maven/content"
//        url "https://maven.oracle.com"
        credentials {
            username "${oracleUsername}"
            password "${oraclePassword}"
        }
    }
}

...


dependencies {
    compile group: 'com.oracle.jdbc', name: 'ojdbc8', version: '12.2.0.1'
}

我还记录了我在教程GitHub存储库中提出的一个问题:

https://github.com/robin-a-meade/example-gradle-oracle/issues/1

编辑: 任何问题都出现在这种依赖关系中,所以我不得不改为:

compile(group: 'com.oracle.jdbc', name: 'ojdbc8', version: '12.2.0.1') {
    exclude module: 'xmlparserv2'
}

有关为何需要这样做的解释,请参阅此问题:Is "xmlparserv2" from "com.oracle.jdbc:ojdbc8" (v12.2.0.1) all of a sudden corrupt?