如何通过 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数添加到 flyway build.gradle 文件?

如何将 JDBC 驱动程序添加到 Flyway Gradle 插件

如何将 gradle 库依赖项添加到 codenameone 项目

如何将安全策略文件添加到 rmi 应用程序的 gradle 构建?

如何将 kotlin 类添加到 gradle JavaCompile 任务

如何在 Android Studio 项目中将库添加到 Gradle 构建?