我想在编译时下载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的版本,则会在存储库中找不到错误。
答案 0 :(得分:2)
我发现解决方案是将驱动程序的版本升级到ojdbc8
。
此链接有助于:
我的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?