java - Maven:在war/WEB-INF/lib中找不到本地依赖文件
问题描述
我添加了我的本地依赖库(jar
文件):
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/ojdbc7-12.1.0.2.jar</systemPath>
</dependency>
一切正常,直到 maven 生成战争神器。
我查看了生成的war文件,但是里面没有jar依赖。
有任何想法吗?
我知道我可以使用maven installfile
. 我需要使用这种依赖声明来关注问题。
解决方案
来自Maven 文档:
system:此范围类似于提供的范围,只是您必须提供明确包含它的 JAR。工件始终可用,不会在存储库中查找。
provided:这很像 compile,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java 企业版构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递。
似乎系统范围需要容器或 JDK 来提供依赖作为提供的范围。因此,依赖项不会打包到 WAR 文件中。
您可以使用以下方式将依赖项打包到 lib 文件夹中maven-war-plugin
:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
...
<webResources>
<resource>
<directory>libs</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>ojdbc7-12.1.0.2.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
推荐阅读
- spring - 导入 MockMultipartFile 不起作用,我是否使用了正确的依赖项?
- c# - 从 MySql 数据库 C# 返回视图列表
- jena - SelectBuilder 会阻止 sparql 注入吗?
- python - 如何使用 pyspark sql 重新分区
- javascript - RegEx 规则强制开始字符串并允许 Intranet 链接
- c# - 按住键给定毫秒
- arrays - 如何返回在具有约束结构的泛型类中获得的字节数组作为泛型值?
- reactjs - 如何从子组件中获取 formik 道具?
- list - 在 F# List of List 中查找唯一记录
- c# - 如何将核心类库项目中的服务器路径获取到静态方法中