2016-06-13 109 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 
} 
相關問題