如何通过 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.xml
和 settings-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 构建?