java - maven:如何为本地安装的依赖指定 "systemPath"?

标签 java maven dependencies repository local

我有一个 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>

有效!

最佳答案

当您的项目依赖的库不在maven本地仓库中时,需要提供系统路径。

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

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

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

  • 您已在本地安装了它(在本例中,它位于您的本地存储库中,但可能不在您的队友存储库中)

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

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

关于java - maven:如何为本地安装的依赖指定 "systemPath"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53238933/

相关文章:

java - 为什么 Arrays.binarySearch 与遍历数组相比没有提高性能?

java - Hibernate:如何使用 HQL 选择空对象?

java - 如何获取sql表中显示的日期格式?

java - 如何上传OpenCV jar和opencv dll。文件到Heroku

android - 升级gradle之后:程​​序类型已经存在:net.jcip.annotations.GuardedBy

javascript - Visual Studio Code 2020 - git 连接并添加项目

eclipse - Ear-javaee6 原型(prototype)不允许 Java 文件

java - 如何重新安装 Maven 库?

C++:依赖跟踪工具(逆向工程)

java - 运行时依赖第三方?