当前位置: 首页
编程语言
Maven打包时把第三方依赖包一起打包的技巧

Maven打包时把第三方依赖包一起打包的技巧

热心网友 时间:2026-06-10
转载

为了将第三方依赖打包进可执行Jar,先以system作用域引入本地Jar,用maven-dependency-plugin拷贝依赖至target lib,再用maven-antrun-plugin复制本地Jar,最后通过maven-jar-plugin在MANIFEST MF中指定class-path。

Maven 打包详解:如何将第三方依赖包一并打入 Jar 文件

在 Java 项目开发中,时常会遇到需要将 Oracle JDBC 驱动这类第三方依赖包直接打包进最终可执行 Jar 文件的场景。尤其是当这些依赖不在公共 Maven 仓库中,或因版本问题无法通过常规 自动下载时,手动配置便成为不可或缺的关键步骤。下面分享一套经过实践验证的完整配置方案,从本地依赖引入到 classpath 指定,一次搞定。

1. 通过本地方式导入第三方依赖包

首先,需要将本地的第三方 Jar 包以系统依赖的形式引入。以 Oracle 驱动 ojdbc6 为例,许多企业会将其存放在项目 lib 目录下。借助 system 作用域并配置 systemPath,Maven 即可识别该依赖并参与编译流程。


    com.oracle
    ojdbc6
    11.2.0.3
    system
    ${basedir}/lib/ojdbc6-11.2.0.3.jar

2. 将依赖复制到 Jar 外部的 lib 目录

编译完成后,打包阶段需要把所有运行时依赖搬运到 target/lib 下。这里利用 maven-dependency-plugincopy-dependencies 目标,通过指定输出目录和包含范围(runtime),即可自动完成依赖的迁移。



    org.apache.maven.plugins
    maven-dependency-plugin
    
        
            copy-dependencies
            package
            
                copy-dependencies
            
            
                ${project.build.directory}/lib/
                runtime
                false
            
        
    

3. 手动复制第三方依赖 Jar 到 lib 目录

这里有个需要注意的地方:maven-dependency-plugin 只会复制 Maven 仓库中的依赖,对于 system 作用域的本地 Jar 包,它并不会自动处理。因此还需要额外补充一步——使用 maven-antrun-pluginlib/ojdbc6-11.2.0.3.jar 显式复制到 target/lib 下。这一步相当于“手工搬运”,确保所有必需的 Jar 包都集中到同一目录。


    maven-antrun-plugin
    3.0.0
    
        
            compile
            package
            
                run
            
            
                
                    
                
            
        
    

4. 在 MANIFEST.MF 文件的 class-path 中添加 lib/ojdbc6-11.2.0.3.jar

最后一步,也是最容易遗漏的一环——修改 MANIFEST.MF 文件。若希望 java -jar 运行时能正确加载 lib 目录下的依赖,必须通过 maven-jar-pluginClass-Path 中显式声明每个 Jar 的路径。这里配置了 addClasspath: trueclasspathPrefix: lib/,然后在 manifestEntries 中追加一条 Class-Path: lib/ojdbc6-11.2.0.3.jar。需要注意,这一步是“双重保障”——addClasspath 会自动添加其他依赖,但本地 Jar 仍需手动补充。


    org.apache.maven.plugins
    maven-jar-plugin
    2.4
    
        
            false
            
                
                true
                lib/
            
            
            
                lib/ojdbc6-11.2.0.3.jar
            
        
    

顺带提一下,如果后续希望将这类本地 Jar 永久安装到本地 Maven 仓库,可以使用 mvn install:install-file 命令,示例如下:

mvn install:install-file -Dfile=lib/api-gw-sdk-java-V3.3.0.jar -DgroupId=com.iflytek -DartifactId=api-gw-sdk-java -Dversion=V3.3.0 -Dpackaging=jar

这样下次便可以直接通过 引用了。

总结

这套方案的核心逻辑是:本地 Jar 通过 system 作用域引入编译流程,打包阶段手动复制到 lib 目录,最后在 MANIFEST.MF 中设定 classpath。虽然步骤稍显繁琐,但优势在于灵活可控,特别适用于那些无法上传至公共仓库的企业级依赖。希望这份配置能给您带来帮助。

ma ven打包实现将第三方依赖包一起打入

来源:https://www.jb51.net/program/3654486jc.htm

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
AWS RDS 数据库配置入门与基础操作指南

AWS RDS 数据库配置入门与基础操作指南

本文介绍了AWSRDS的基本概念与核心价值,即提供托管式关系数据库服务,简化运维。详细阐述了创建RDS实例的关键配置步骤,包括引擎选择、实例规格、存储与网络设置。最后,指导读者如何通过多种方式安全连接至数据库实例,并开始进行数据操作,为后续应用开发奠定基础。

时间:2026-07-10 06:41
PHP MVC中AJAX请求无法调用控制器方法的原因与解决方案

PHP MVC中AJAX请求无法调用控制器方法的原因与解决方案

PHPMVC中AJAX请求返回整页HTML的常见原因是控制器方法未正确输出响应或未终止执行,导致框架渲染视图。解决方法是在控制器中设置JSON响应头、输出数据后调用exit()明确终止,同时前端使用小写url和dataType: "json "。

时间:2026-07-10 06:40
Go语言手动构造rsa.PublicKey:正确初始化大整数模数N完整指南

Go语言手动构造rsa.PublicKey:正确初始化大整数模数N完整指南

手动构造RSA公钥时,模数N为*big Int类型,不能直接使用超长十进制字面量,需通过SetString或UnmarshalText方法解析字符串。公钥指数E可直接赋值,推荐65537。生产环境应使用rsa GenerateKey生成密钥对,避免手动构造引发的安全和格式错误。

时间:2026-07-10 06:39
Go语言实现HTTP定时轮询监控多URL响应时间与状态检测

Go语言实现HTTP定时轮询监控多URL响应时间与状态检测

使用Go语言实现HTTP定时轮询监控,通过按行分割与Tab解析URL列表,避免闭包陷阱和nil指针,每个URL启动独立ticker安全并发请求,并配置超时控制与资源关闭,确保响应时间与状态码准确检测。

时间:2026-07-10 06:39
Tkinter中Label标签在主循环动态更新的正确方法

Tkinter中Label标签在主循环动态更新的正确方法

在Tkinter中正确动态更新标签的方法:将标签组件的textvariable参数绑定到一个StringVar变量,然后通过调用该变量的 set()方法更新其值,界面会自动刷新。这样避免直接修改text属性或调用update()。此做法实现数据与界面的解耦,代码更简洁,响应更及时,避免手动同步的闪烁,推荐做法。

时间:2026-07-10 06:39
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜