IBM DB2与Oracle SQLJ转换器去向及本地引入方法咨询
关于SQLJ转换器Maven依赖缺失及本地引入的问题
我一年前开发Java项目时,使用Codehaus Mojo SQLJ Plugin将.sqlj文件转换为可访问的Java类,当时pom.xml中的插件配置如下:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sqlj-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <goals> <goal>sqlj</goal> </goals> <configuration> <sqljDirs> <sqljDir>src/main/sqlj/</sqljDir> </sqljDirs> <generatedSourcesDirectory>../sales-persistance/src/main/java</generatedSourcesDirectory> <generatedResourcesDirectory>../sales-persistance/src/main/resources/ro/ibm/sqlj</generatedResourcesDirectory> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>com.ibm.db2</groupId> <artifactId>sqlj4</artifactId> <version>4.29.29</version> </dependency> </dependencies> </plugin> </plugins> </build>
该配置依赖com.ibm.db2:sqlj4完成SQLJ转换。根据官方文档,SQLJ转换器(比如IBM或Oracle的实现)仅随对应数据库(如Oracle Database 23c)提供,并非独立分发包。但一年前com.ibm.db2:sqlj4还能在MavenCentral找到,现在已无法获取;另外从GitHub旧项目中得知Oracle曾有无需数据库客户端的SQLJ转换器(com.oracle:sqlj),现在也找不到任何Maven仓库提供该依赖。
现咨询两个问题:
- 为何独立版本的转换器不再可获取?
- 是否可以下载对应的Jar包并通过pom.xml本地引入?目前Oracle和IBM未提供相关下载链接。
问题解答
1. 独立版本转换器消失的原因
- 厂商分发策略调整:IBM和Oracle后续收紧了SQLJ工具的分发方式,不再将转换器Jar包作为独立依赖上传至公共Maven仓库,而是严格绑定到数据库客户端或官方开发套件中。这是出于版权管控、版本兼容性匹配的考虑——SQLJ转换器需要与对应数据库的JDBC驱动、服务器版本严格对齐,独立分发容易引发兼容性问题。
- 公共仓库清理:部分旧版依赖可能因为厂商要求、仓库维护政策(比如移除未授权或不再维护的包)被MavenCentral等公共仓库下架。
2. 本地引入Jar包的可行性及方案
可以通过本地Jar包引入,具体步骤如下:
- 获取Jar包途径:
- 从已部署过该项目的本地Maven仓库缓存中提取:检查本地
.m2/repository/com/ibm/db2/sqlj4/4.29.29/目录,若之前构建过项目,大概率能找到对应的sqlj4-4.29.29.jar文件。 - 从数据库客户端安装包中提取:下载对应版本的IBM DB2客户端或Oracle数据库开发套件,安装后在安装目录的lib文件夹中找到SQLJ转换器Jar(比如DB2的
sqlj4.jar、Oracle的sqlj.jar)。
- 从已部署过该项目的本地Maven仓库缓存中提取:检查本地
- 本地引入的Maven配置:
方式一:使用systemscope直接引用本地Jar
方式二:将Jar安装到本地Maven仓库(推荐)<dependency> <groupId>com.ibm.db2</groupId> <artifactId>sqlj4</artifactId> <version>4.29.29</version> <scope>system</scope> <systemPath>${project.basedir}/lib/sqlj4-4.29.29.jar</systemPath> </dependency>
执行以下Maven命令(替换Jar路径、groupId、artifactId、version):
安装完成后,即可像普通Maven依赖一样在pom.xml中引用,无需额外配置scope或systemPath。mvn install:install-file -Dfile=/path/to/sqlj4-4.29.29.jar -DgroupId=com.ibm.db2 -DartifactId=sqlj4 -Dversion=4.29.29 -Dpackaging=jar
内容的提问来源于stack exchange,提问作者Mario Mateaș
相关产品推荐
相关产品推荐

