【问题标题】:maven: how to specify "systemPath" for dependencied installed locally?maven:如何为本地安装的依赖项指定“systemPath”?
【发布时间】:2023-04-06 11:26:01
【问题描述】:

我有一个 myPackage maven 项目,编译并安装到本地 maven 存储库下

~/.m2/repository/mygroup/myPackage/1.0-SNAPSHOT/myPackage-1.0-SNAPSHOT.jar

在另一个 maven 项目中,我希望使用它,并在 pom.xml 中为它写了<dependency> 部分。但我不知道如何为这个 jar 编写“systemPath”:

  1. 我不能用“~”指定路径,因为“~”是*nix shell扩展,java/maven无法识别。

  2. 我不能像

    那样硬编码
    /home/myself/.m2/...
    

    它不是便携式的。

  3. 我不能使用 ${project.basedir} 因为这 2 个 maven 项目位于不同的文件夹下。但是我想应该还有其他一些可以指示“主目录”的maven环境变量?

我想做的就是完成这个“systemPath”。

----------------使用另一个项目作为依赖解决的问题------------

<systemPath>${project.basedir}/../myPackage/pom.xml</systemPath>

这行得通!

【问题讨论】:

  • 只需在 pom.xml 中创建一个依赖项就可以了。
  • 仅添加依赖项将首先检查它是否在 .m2 存储库中可用/如果您使用任何 IDE(如 eclipse),您可以手动添加 jar。

标签: java maven dependencies repository local


【解决方案1】:

当您的项目所依赖的库不在 maven 本地存储库中时,需要系统路径。

根据经验,这种方法确实是不可移植的,在实际项目中应该避免使用。

现在,如果满足以下条件,则依赖项位于本地存储库中:

  • 它是从某个远程存储库下载的(通常)

  • 您已在本地安装它(在这种情况下,它在您的本地存储库中,但可能不在您的队友存储库中)

为了将依赖项安装到本地 repo 中,请考虑使用:mvn install:install-file+ 参数写成here

但是从您的问题来看,该文件似乎已经存在...无论如何,一旦该文件位于本地存储库中,您只需定义一个“常规”依赖项(组、工件、版本),Maven 就会选择它,在这种情况下无需摆弄系统路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2020-03-22
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多