在 pom.xml 依赖标记中为 jar 文件添加 systemPath

Posted

技术标签:

【中文标题】在 pom.xml 依赖标记中为 jar 文件添加 systemPath【英文标题】:Adding systemPath for jar file inside pom.xml dependency tag 【发布时间】:2021-12-29 11:29:48 【问题描述】:

我已将一个现有的 maven 项目导入 Eclipse IDE。 pom.xml 有一个如下所示的依赖项。

    <dependency>
        <groupId>com.myApp</groupId>
        <artifactId>MyDBConn</artifactId>
        <version>0.0.0</version>
        <scope>system</scope>
        <systemPath>$basedir/dependencies/MyDBConn.jar</systemPath>
    </dependency>

排队

<systemPath>$basedir/dependencies/MyDBConn.jar</systemPath>

我收到一个错误提示

在这一行找到多个注释: - com.myApp:MyDBConn:jar 的“dependencies.dependency.systemPath”不应指向文件 在项目目录中,$basedir/dependencies/MultiDBConn.jar 将无法被依赖解析 项目 - com.myApp:MyDBConn:jar 的“dependencies.dependency.systemPath”必须指定一个绝对值 路径但是是 $basedir/dependencies/MyDBConn.jar

我在项目目录的依赖文件夹中有 MyDBConn.jar 文件。据我了解 $basedir 指向 pom.xml 所在的路径。 那为什么会出现这个错误呢?

【问题讨论】:

第一个问题:为什么需要系统作用域依赖?该依赖项是由 Maven 构建的吗? 系统路径导入有时是有原因的。同样在这里。从终端构建的 Maven 工作正常。在我的情况下,这只是 eclipse ide,用 pom 编辑器打开了 pom,编辑器将其显示为错误。所以我想这是一个编辑器错误。不幸的是,项目 im project explorer 也被标记为失败 【参考方案1】:

这不是错误;这是一个警告。请再次检查日志。 Maven 警告您,依赖 MyDBConn.jar 将不可用于依赖此项目的其他项目(依赖于 MyDBConn.jar 的项目)。

com.myApp.MyDBConn 是你写的吗?您可以在该项目上运行 mvn clean install 以将 jar 放在本地 Maven 存储库中。然后,您可以像这样使用它:

<dependency>
    <groupId>com.myApp</groupId>
    <artifactId>MyDBConn</artifactId>
    <version>0.0.0</version>
</dependency>

【讨论】:

还有一点需要注意,Maven 团队说系统依赖是deprecated。 @Hari 这回答了你的问题吗? 从命令行构建是好的。只是 Eclipse 中的 pom 编辑器将其标记为错误。 @Hari,这回答了你的问题吗?

以上是关于在 pom.xml 依赖标记中为 jar 文件添加 systemPath的主要内容,如果未能解决你的问题,请参考以下文章

jar 的 POM 无效,传递依赖将不可用

Maven pom.xml 添加本地jar包依赖以及打包方法

(转)如何在maven的pom.xml中添加本地jar包

ecilpse中maven项目、配置pom.xml添加依赖jar包出错

如何 配置pom.xml去官方仓库下jar包

在pom.xml中引入jar包坐标的依赖范围