如何通过Gradle将ojdbc7添加到Java Web应用程序?

7

我的背景:

  • 我正在构建一个基于Spring Boot 1.3.5.RELEASE的Java Web应用程序。
  • 我尝试将ojdcb添加到依赖列表中,但没有成功。
  • 我知道Oracle在http://maven.oracle.com上有自己的Maven仓库。

这是我的build.gradle文件,请关注第4、5、6和36行:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url ("https://maven.oracle.com")
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")

    }
}

apply plugin: 'war'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'erp'
    version = '1.0.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    //compile("org.springframework.boot:spring-boot-starter-security")
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.hibernate:hibernate-core")
    compile("com.oracle.jdbc:ojdbc7:12.1.0.2")
    testCompile("junit:junit")
}

IntelliJ IDEA 2016提示错误:

警告:根项目'erp':Web Facets/Artifacts将无法正确配置 详情: org.gradle.api.artifacts.ResolveException: 无法解析配置':runtime'的所有依赖项。造成原因是: org.gradle.internal.resolve.ModuleVersionNotFoundException: 找不到com.oracle.jdbc:ojdbc7:12.1.0.2。需要此依赖项: :erp:未指定

enter image description here

(相关链接:http://docs.oracle.com/middleware/1213/core/MAVEN/config_maven_repo.htm#MAVEN9015 https://blogs.oracle.com/dev2dev/entry/how_to_get_oracle_jdbc https://blogs.oracle.com/dev2dev/entry/oracle_maven_repository_instructions_for )

请帮我通过Gradle将ojdbc添加到依赖列表中,谢谢!

4个回答

14

Gradle目前无法处理Oracle的Maven存储库使用的基于域的SSO机制所需的重定向。

解决方法是使用此URL代替。

url "https://www.oracle.com/content/secure/maven/content"

另外,您需要提供认证凭据。

这是一个最简示例:

plugins {
  id 'java'
}

repositories {
    jcenter()

    maven {

       url "https://www.oracle.com/content/secure/maven/content"

       credentials {
         username = '<Oracle Account email address>'
         password = '<Oracle Account password>'
       }
    }
}

dependencies {
    compile 'com.oracle.jdbc:ojdbc7:12.1.0.2'
}

我有一个 Github 存储库,其中包括一个使用 Maven 的 settings.xmlsettings-security.xml 加密密码的完整示例:example-gradle-oracle

我正在按照 Gradle AuthenticationSupported.java 文件中提到的方法,在用户名和密码后添加 "="。


这对我有用。 此外,正如@Opal在他的答案中指出的那样,在问题的示例“build.gradle”文件中,Oracle存储库的定义位置错误。它需要在顶级repositories { ... }部分中定义,而不是在buildscript { ... }内部定义。 - jschreiner

7

针对Oracle数据库12c:

(1) 在Oracle官网下载ojdbc7.jar

(2) 运行以下命令:

mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar

(3) 添加到 build.gradle

compile('com.oracle:ojdbc7:12.1.0.1')

5

如果你替换以下内容,你的build.gradle将能够正常工作:

maven {
    url ("https://maven.oracle.com")
}

to:

maven {
    url "https://www.oracle.com/content/secure/maven/content"
    name "maven.oracle.com"
    credentials {
       username 'email@mail.com'
       password 'your password'
    }
}

来自Oracle注册页面的凭证:https://profile.oracle.com/myprofile/account/create-account.jspx

另外:

如果要将身份验证数据放置在项目主目录之外,可以编辑配置文件~/.gradle/gradle.properties

mavenOracleUsername=email@mail.com
mavenOraclePassword=your password

并在配置中使用它,例如:

 credentials {
    username mavenOracleUsername
    password mavenOraclePassword
}

0

我已经添加了http://nexus.saas.hand-china.com/content/repositories/rdc/仓库并工作

repositories {
    mavenCentral()
    //Add this repo
    maven {
        url "http://nexus.saas.hand-china.com/content/repositories/rdc/"
    }
}
...
dependencies {
   ....
   compile group: 'com.oracle', name: 'ojdbc7', version: '12.1.0.2'
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接