在实际项目中,我们通常使用这样的方式:首先,下载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>
疑问
- 虽然通过这种方式,可以直接获取相应的Jar。但实现需要知道Jar的相关信息,例如groupId、artifactId、version等。这些信息在哪里知道?
- 通过权限访问这种方式,略显复杂。如果是公司的本地库,可以配置统一的Jar管理,例如artifactory软件等。