为了账号安全,请及时绑定邮箱和手机立即绑定

Maven:在 war/WEB-INF/lib 中找不到本地依赖文件

Maven:在 war/WEB-INF/lib 中找不到本地依赖文件

青春有我 2023-04-26 16:40:34
我已经添加了我的本地依赖库(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 artifact。我查看了生成的 war 文件,但是里面没有 jar 依赖项。有任何想法吗?我知道我可以使用maven installfile. 我需要使用这种依赖声明来关注问题。
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

来自Maven 文档:

system:此范围类似于提供的范围,只是您必须显式提供包含它的 JAR。工件始终可用,不会在存储库中查找。

provided:这很像编译,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将对 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,不可传递。

似乎系统范围需要容器或 JDK 提供依赖作为提供的范围。因此,依赖项不会打包到 WAR 文件中。

maven-war-plugin您可以像这样将依赖项打包到 lib 文件夹中:

<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>


查看完整回答
反对 回复 2023-04-26
?
HUH函数

TA贡献1836条经验 获得超4个赞

作为 Maven 构建的一部分,编译范围内的依赖项会自动添加到目标的 WEB-INF/lib 中。系统范围内的依赖关系不是,必须通过定义明确提供具有系统范围的依赖关系。

查看完整回答
反对 回复 2023-04-26
?
RISEBY

TA贡献1856条经验 获得超5个赞

WAR 是 Tomcat、Glassfish、JBoss (...) 等 Servlet 容器的 Web 存档。它们由 Servlet 规范指定。规范指出数据源(数据库)在 Servlet-Containers 的领域。

(...) 类型 javax.sql.DataSource,在组件可供应用程序使用之前,容器会为其注入对数据源的引用。

您应该将数据库驱动程序放置到 servlet 容器中,而不是 Web 应用程序中。


查看完整回答
反对 回复 2023-04-26
  • 3 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信