2016-06-13 76 views
2

我的背景:如何通过Gradle将ojdbc7添加到Java Web应用程序?

  • 我建立一个Java Web应用程序基于Spring引导 1.3.5.RELEASE什么。
  • 我尝试将ojdcb添加到依赖项列表中,但未成功。
  • 我知道,甲骨文有自己的Maven仓库处的 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通知错误:

Warning:root project 'erp': Web Facets/Artifacts will not be configured properly Details: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration ':runtime'. Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.oracle.jdbc:ojdbc7:12.1.0.2. Required by: :erp:unspecified

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

帮我加摇篮到ojdbc依存列表,谢谢!

回答

0

Oracle的Maven仓库: - >repositories

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

应在不低于buildscriptrepositories部分中定义。后者为脚本本身定义了存储库,而不是项目的依赖关系。

+0

谢谢蛋白石,但它不起作用。 –

+0

什么不起作用?请注意,您需要授权才能访问存储库。以前,你甚至没有连接到它。 – Opal

+0

我也认为它有授权问题.. –

3

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

一个workaround就是用这个网址,而不是

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' 
} 

我有一个完整的例子包括使用加密密码的方式Maven的settings.xmlsettings-security.xml一个GitHub库:example-gradle-oracle

我加入=用户名后在Gradle AuthenticationSupported.java文件中提到的密码

+0

这适用于我。另外,正如@Opal在他的回答中所指出的,在问题的示例'build.gradle'文件中,Oracle存储库被定义在错误的位置。它需要在顶级'版本库{...}'部分中定义,而不是在'buildscript {...}'中。 – jschreiner

0

如果您替换:您的build.gradle将工作:

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

到:

从Oracle注册页面
maven { 
    url "https://www.oracle.com/content/secure/maven/content" 
    name "maven.oracle.com" 
    credentials { 
     username '[email protected]' 
     password 'your password' 
    } 
} 

Credetials:https://profile.oracle.com/myprofile/account/create-account.jspx

此外:

要放置项目主页之外的认证数据,您可以编辑配置文件~/.gradle/gradle.properties

[email protected] 
mavenOraclePassword=your password 

,并用它在配置,如:

credentials { 
    username mavenOracleUsername 
    password mavenOraclePassword 
} 
相关问题