Oracle JDBC为什么不能在Maven中直接配置?

  在实际项目中,我们通常使用这样的方式:首先,下载ODBC的Jar到本地;然后,通过Maven安装在本地库中。这样在项目中就可以使用ODBC的Jar包了,而大部分的jar是可以通过Maven中直接引用的。这是为什么呢?

项目报错

  项目直接编译,报错如下

Failed to execute goal on project sql2o-oracle: 
Could not resolve dependencies for project org.sql2o.extensions: sql2o-oracle:jar:1.6.0-RC4-SNAPSHOT: 
Could not find artifact com.oracle.jdbc:ojdbc8:jar:12.2.0.1 in central (https://repo.maven.apache.org/maven2)

很明显项目中的引用:com.oracle.jdbc:ojdbc8:jar:12.2.0.1,无法在公共仓库中找到。

常用做法

  一般的做法就是下载Jar包,然后存放在本地仓库中,这样就可以直接在项目中引用。但通常这样略显麻烦,也不具有通用性。之前这样做的原因主要是涉及到许可的原因,Oracle不开放ODBC的Jar不会开放到公共仓库中。
  关于ODBC方面的讨论可以参考:Find Oracle JDBC driver in Maven repository .

目前实现

  目前可以通过POM中的配置来直接使用Oracle仓库中的Jar,环境可以参考:6 Configuring the Oracle Maven Repository .

  博主主要分为三步实现本地Oracle库的配置:
1. 注册账号:https://www.oracle.com/webapps/maven/register/license.html 。如果已经注册过OTN(Oracle Technology Network)的账号,所以直接跳过;
2. 配置本地Settings.xml

    <server>
        <id>maven.oracle.com</id>
        <username>[OTN username]</username>
        <password>[OTN password]</password>
        <configuration>
            <basicAuthScope>
                <host>ANY</host>
                <port>ANY</port>
                <realm>OAM 11g</realm>
            </basicAuthScope>
            <httpConfiguration>
                <all>
                    <params>
                        <property>
                            <name>http.protocol.allow-circular-redirects</name>
                            <value>%b,true</value>
                        </property>
                    </params>
                </all>
            </httpConfiguration>
        </configuration>
    </server>

3.Maven中配置

    <repositories>
        <repository>
            <id>maven.oracle.com</id>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>https://maven.oracle.com</url>
            <layout>default</layout>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>maven.oracle.com</id>
            <url>https://maven.oracle.com</url>
        </pluginRepository>
    </pluginRepositories>

疑问

  1. 虽然通过这种方式,可以直接获取相应的Jar。但实现需要知道Jar的相关信息,例如groupId、artifactId、version等。这些信息在哪里知道?
  2. 通过权限访问这种方式,略显复杂。如果是公司的本地库,可以配置统一的Jar管理,例如artifactory软件等。

参考

  1. Get Oracle JDBC drivers and UCP from Oracle Maven Repository (without IDEs)
  2. Find Oracle JDBC driver in Maven repository
  3. 6 Configuring the Oracle Maven Repository
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值