在实际项目中,我们通常使用这样的方式:首先,下载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
    
    	maven.oracle.com</id>
    	[OTN username]</username>
    	[OTN password]</password>
    	
    		
    			ANY</host>
    			ANY</port>
    			OAM 11g</realm>
    		</basicAuthScope>
    		
    			
    				
    					
    						http.protocol.allow-circular-redirects</name>
    						%b,true</value>
    					</property>
    				</params>
    			</all>
    		</httpConfiguration>
    	</configuration>
    </server>
  3. Maven中配置
    
    	
    		maven.oracle.com</id>
    		
    			true</enabled>
    		</releases>
    		
    			false</enabled>
    		</snapshots>
    		https://maven.oracle.com</url>
    		default</layout>
    	</repository>
    </repositories>
    
    	
    		maven.oracle.com</id>
    		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

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Apache Spark vs. Apache Flink 上一篇
Hive复杂类型的导入 下一篇