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

Posted

技术标签:

【中文标题】如何通过 Gradle 将 ojdbc7 添加到 Java Web 应用程序?【英文标题】:How to add ojdbc7 to Java web app by Gradle? 【发布时间】:2016-10-13 12:18:40 【问题描述】:

我的背景:

我构建了一个基于 Spring Boot 的 Java Web 应用程序 1.3.5.发布。 我尝试将ojdcb 添加到依赖项列表中,但没有成功。 我知道 Oracle 在 http://maven.oracle.com

这是我的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:无法解决所有问题 配置“:运行时”的依赖项。造成的: org.gradle.internal.resolve.ModuleVersionNotFoundException:不能 找到 com.oracle.jdbc:ojdbc7:12.1.0.2。要求: :erp:unspecified

(相关链接: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 )

帮我把 ojdbc 添加到 Gradle 的依赖列表中,谢谢!

【问题讨论】:

【参考方案1】:

Gradle 目前无法处理基于领域所需的重定向 Oracle 的 maven repo 使用的 SSO 机制。

workaround 是使用这个 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 ... 中。【参考方案2】:

对于 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')

【讨论】:

【参考方案3】:

如果您替换,您的 build.gradle 将起作用:

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

到:

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

【讨论】:

【参考方案4】:

我已经添加了 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'

【讨论】:

以上是关于如何通过 Gradle 将 ojdbc7 添加到 Java Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章