maven打包oracle jdbc驱动

背景

由于版权问题,maven中央仓库缺少oracle jdbc的驱动,这个给开发带来了很多不便利性。也出现各种各样的解决方案,基本就两种思路:

  • 将oracle驱动安装到本地仓库,这个需要大家统一好名称和版本
  • 使用第三方仓库

不管哪种方案,本来maven就是为了方便开发人员管理包依赖,这样一来反而更麻烦。当然,不是maven的错,oracle这事做的确实够sb。(听说oracle要对java进行收费???)
那么有没有更好的方案,假设你现在开发了一个框架,框架支持多数据库,并且已经将jar包提交至maven中央仓库,如果你的jar包里面就已经包含了oracle驱动,那么使用框架的人就不用额外再去导入驱动。

这种方案有以下几个小问题

  • 会不会有版权问题(这个不是很了解)
  • 驱动升级怎么办
  • 怎么把驱动打到jar包里

关于驱动升级问题,可以对jar包发布多个版本,比如纯净版不包含驱动,驱动xxx版包含不同版本的驱动。

本文主要探讨的就是第三个问题,怎么把驱动打到jar包里

背景交代完毕,正文开始。

实现

遇到的问题

你可能觉得,这是个很简单的事,通过idea的Artifacts不就行了。是的,如果你只是想在本地打一个jar包,这种方式简单方便。但如果要上传到maven,就得使用maven来打包,maven是不管你ide是怎么配置的,而且maven不会将依赖包打到jar包里的。有几个方案可以考虑

  • 借助maven插件maven-assembly-plugin可以实现自定义打包,但是该插件是将依赖包全部放在lib目录下,这个不是我的本意,我的本意是将依赖包里的class文件解压到根目录下,和自开发的jar包同一个目录下。(这个插件我研究了很久不能实现就放弃了,如果有知道怎么实现的读者欢迎留言)
  • 自己写插件实现,其实难度也不大,就是麻烦点
  • 借助maven脚本执行插件exec-maven-plugin执行自定义脚本对maven打包后的jar包进行"改造"。

最终选择了第三个方案,写shell脚本实现自定义打包

配置

首先引入插件的依赖
pom.xml

    <plugins>
        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <executions>
                <execution>
                    <id>asan</id>
                    <phase>package</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>${basedir}/scripts/package.sh</executable>
                        <arguments>
                            <argument>${project.build.directory}</argument>
                            <argument>${project.build.finalName}</argument>
                            <argument>/Users/asan/u01/docker/lib/ojdbc6.jar</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • phase:在打包这个生命周期结束后执行该脚本
  • executable:脚本目录位置
  • arguments:传给脚本的参数,这里传了三个参数
  • ${basedir}:当前目录,就是项目所在目录
  • ${project.build.directory}:maven构建目录,就是target目录
  • ${project.build.finalName}:maven打包名称
  • /you/path/ojdbc6.jar:要打进去的jar包路径

脚本

package.sh

v_name=$2.jar
v_depency=$3
v_depency_name=`basename $3`
echo "workspace==>$v_workspace"
echo "name==>$v_name"
echo $v_depency
echo $v_depency_name
rm -rf $v_workspace
mkdir -p $v_workspace
cp $v_depency $v_workspace
cd $v_workspace
jar -xf $v_workspace/$v_depency_name
rm -rf $v_workspace/$v_depency_name
rm -rf META-INF/
cp $1/$v_name $v_workspace
for file in `ls $v_workspace`
do
    if [ -d $file ]
    then
        jar -uf $v_workspace/$v_name $file
    fi
done
rm -rf $1/$v_name
mv $v_workspace/$v_name $1/$v_name

整个脚本的大概流程如下

  1. 创建一个临时目录v_workspace
  2. 将依赖包复制到临时目录下
  3. 解压依赖包
  4. 删除jar包和META-INF文件夹
  5. 将项目的jar包复制到临时目录下
  6. 遍历所有文件夹,将文件夹通过命令jar -uf更新到项目jar包里
  7. 用新的jar包替换掉老的jar包

写在最后

现在脚本里只支持一个jar包,稍微修改下就可以支持多个,或者你可以在自己本地把多个jar包用jar -uf打到一个jar包里,再执行脚本。

原文地址:https://segmentfault.com/a/1190000017053861

原文地址:https://www.cnblogs.com/lalalagq/p/9986644.html

时间: 2024-11-09 02:44:19

maven打包oracle jdbc驱动的相关文章

转: Maven 仓库中添加Oracle JDBC驱动(11g)

1.由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库,此文档用的是Oracle 11g.通过Oracle的安装目录获得,位置在:E:\app\zhaoheng\product\11.2.0\dbhome_1\jdbc\lib下: 此使用的是ojdbc6.jar 2.知道自己安装的Oracle是什么版本的 可以在SQL窗口中输入:select * from v$instance

在Maven仓库中添加Oracle JDBC驱动

由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 一.首先要得到Oracle JDBC Driver 1.通过Oracle官方网站下载相应版本:http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html 2.通过Oracle的安装目录获得,位置在“{ORACLE_HOME}\jdbc\l

手动向Maven本地仓库添加ORACLE jdbc驱动

一,当在maven工程中我们需要连接数据库的时候,只需要配置它的依赖就行,但是Maven不提供Oracle JDBC driver,由于Oracle授权问题它并没有提供,需要自己手动添加. 二,获取连接数据库的jar包,这里以Oracle为例, 1,一般安装Oracle10g以上的版本后,会自动生成ojdbc jar包.可以直接使用, 2,如果没有则需要从官网下载一个,http://www.oracle.com/technetwork/database/features/jdbc/default

Maven管理Oracle11g JDBC驱动(手动安装oracle11g)详细版

首先你到知道自己安装的Oracle是什么版本的? 可以在SQL窗口中输入:select * from v$instance  得到如下结果: 发现我的oracle版本号是:11.2.0.1.0 OracleJDBC驱动包是需要Oracle官方授权才能被下载.所以这里只有选择一个Oracle10.2的ojdbc14.jar或Oracle11.2的ojdbc6.jar(如果你是1og请选择前面的10.2g),通过下面的命令,但是注意的是首先必须将两个jar包复制到C:\Documentsand Se

maven添加oracle jdbc依赖

由于Oracle授权问题,Maven不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库.首先需要到Oracle官网上下载ojdbc的jar包.http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html我选择的是ojdbc7.jar,对应的版本是12.1.0.2.ojdbc7.jar (3,698,857 bytes) -

[Java] Oracle的JDBC驱动的版本说明

classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异 作者:赵磊 博客:http://elf8848.iteye.com 来源:http://elf8848.iteye.com/blog/811037 在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle  JDBC驱动来解决的?最常使用的ojdbc14.jar有多个版本,classes12.jar有多个版本你了解吗? 连接类型: 1.JDBC OCI: o

在Maven仓库中添加Oracle数据库的JDBC驱动依赖

今天在使用IDEA构建Maven项目时,发现Oracle数据库JDBC驱动依赖使用不了,就在网上搜索了一下,下面是不能使用的原因. 由于Oracle授权问题,Maven3不提供oracle JDBC driver,我们也可以在Maven的中心搜索ojdbc驱动包,但是可以看到版本过于陈旧,即使有坐标,也下载不了. 为了可以在使用Maven构建的项目中使用Oracle JDBC driver,我们就必须手动添加Oracle的JDBC驱动依赖到本地仓库中. 既然要手动添加Maven依赖到本地仓库中,

maven添加sqlserver的jdbc驱动包

http://search.maven.org/中没有sqlserver的jdbc驱动,所以需要本地安装sqljdbc的jar包,然后再在pom里面引入 Step 1 在微软官网下载sqljdbc的jar包:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774 本次下载了4.0版本 空间下载连接分享:https://yunpan.cn/cv3TjJqDZM7zu  访问密码 d6bb Step 2

在Maven仓库中手动添加Oracle11g JDBC驱动

由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库 手动添加oracle 11g JDBC 驱动  mvn install:install-file -Dfile=D:/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar 命令执行后 将D:/ojdbc6.