maven 项目中引入第三方jar包的方法

2024-06-22 04:32

本文主要是介绍maven 项目中引入第三方jar包的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博主基本上把maven pom.xml  scope类型给介绍明白了,下面是正文:

------------------------------------------------------------------------------------------------------

说明:这里说的第三方jar包是指maven库中没有改jar包,但是你的项目是maven项目,需要引入该jar包


1 将jar包放入项目的libs(我的路径是/Users/ma/workspace/bi/bi-pom/libs)文件夹中,没有可以自己新建。
2 配置pom.xml,增加如下内容:
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>jodconverter</artifactId>
    <version>2.2.2</version>
    <type>jar</type>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/jodconverter-2.2.2.jar</systemPath>
</dependency>

此时项目结构如下图


说明:
2.1 ${project.basedir} 就是你的项目的根路径,如/Users/ma/workspace/bi/bi-pom
在bi-pom文件夹下,大概会有如下文件:
LICENSE
datas
libs
pom.xml
script
src
target
velocity.log

上面两步完成后发现:
现象1 代码中已经可以使用jar包中的内容了,并且 mvn clean package -Ptest打包的时候,发现也没有问题,甚至直接通过main方法调用代码也没有问题。
现象2 但是如果通过web接口调用jar包中的内容,会报错:
Caused by: java.lang.NoClassDefFoundError: com/artofsolving/jodconverter/openoffice/connection/OpenOfficeConnection
现象3 mvn clean package -Ptest打包后,项目打war包,然后放到服务器上,问题仍然存在。

现象2解决
https://blog.csdn.net/wn084/article/details/80482187
这个博客可以解决现象而的问题。但貌似仅仅是临时的方案,现象三的问题还在。


现象3产生的原因:
当scope为system的时候打包不会自动打包进去的,所以mvn打包会导致第三方包缺失。详细内容如下:
maven中的scope
<scope>system</scope>
scope  maven中scope的默认值是compile
scope的分类
1)compile 默认是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。
2)test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit
3)runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已。在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSRXXX的实现,对应的API jar是compile,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动jar包就是一个很好的例子,一般scope为runtime。  另runtime的依赖通常和optional搭配使用,optional为true。即可以用A实现也可以用B实现。
4)procided 意味着打包的时候可以不用包进去,别的设施(web container)会提供。事实上该依赖理论上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude的动作。
5)system 和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合systemPath使用


scope为system时,maven不打包jar包的解决

解决方法一 避免问题
将jar文件放到 maven 私库里,然后就可以不用使用<scope>syetem</scope>,maven打包的时候会直接从你本地仓库获取jar包,并且打包会打进去

解决方法二 手动添加jar包
将jar包直接加到系统资源中(/Users/ma/workspace/bi/bi-pom/src/main/webapp/WEB-INF/lib路径下,没有lib则创建),WEB-INF/lib中的东西打包的时候会自动打进去

问题:为什么 bi-pom/src/main/webapp/WEB-INF/lib中的东西打包的时候会自动打进去???但是bi-pom/libs中的不行??

解决方法三 配置mvn外部依赖打进war包
更好的方式是配置编译参数<compilerArguments>,添加extdirs将jar包相对路径添加到配置中,如下:
<!--设置maven-war-plugins插件,否则外部依赖无法打进war包-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <directory>libs</directory>
                <targetPath>WEB-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>
————————————————
版权声明:本文为CSDN博主「深山猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h2604396739/article/details/97623552

这篇关于maven 项目中引入第三方jar包的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083296

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

邮件群发推送的方法技巧?有哪些注意事项?

邮件群发推送的策略如何实现?邮件推送怎么评估效果? 电子邮件营销是现代企业进行推广和沟通的重要工具。有效的邮件群发推送不仅能提高客户参与度,还能促进销售增长。AokSend将探讨一些关键的邮件群发推送方法和技巧,以帮助企业优化其邮件营销策略。 邮件群发推送:目标受众 了解他们的需求、兴趣和行为习惯有助于你设计出更具吸引力和相关性的邮件内容。通过收集和分析数据,创建详细的客户画像,可以更精

上采样(upsample)的方法

上采样(upsample)的方法   在神经网络中,扩大特征图的方法,即upsample/上采样的方法   1)unpooling:恢复max的位置,其余部分补零   2)deconvolution(反卷积):先对input补零,再conv   3)插值方法,双线性插值等;   4)扩张卷积,dilated conv;