平台特定的Maven依赖性



这是我要使用的Maven存储库。我的pom.xml的摘要:

<dependency>
  <groupId>edu.wpi.cscore.java</groupId>
  <artifactId>cscore</artifactId>
  <version>1.0.2</version>
</dependency>

运行时,它可以抓住cscore-1.0.2.pom文件,但随后会搜索不存在的cscore-1.0.2.jar - 如果您在存储库中查看,则每个JAR是平台特定的,并且相应地命名(例如cscore-1.0.2-linux.jar)。

我尝试过:

<dependency>
  <groupId>edu.wpi.cscore.java</groupId>
  <artifactId>cscore</artifactId>
  <version>1.0.2</version>
  <type>pom</type>
</dependency>
<dependency>
  <groupId>edu.wpi.cscore.java</groupId>
  <artifactId>cscore</artifactId>
  <version>1.0.2-linux</version>
  <type>jar</type>
</dependency>

它可以使cscore-1.0.2.pom罚款,但随后在1.0.2-linux/目录中查看JAR,这根本不存在。有没有办法告诉Maven,它正在寻找的Jar文件将被命名为其他?还是这根本不是有效的Maven存储库?

谢谢!

应该通过坐标[group-id,artifact-id,version]有一个[和一个]工件。

这些特定于平台的工件可能是手动推入存储库的,并且不能通过预期的Maven依赖性POM元素单独提及。

最简单的短期解决方案是手动提取依赖关系/依赖项,并在本地存储库中安装自己独特的Maven坐标。然后,使用项目的POM中元素的本地坐标参考该工件。

不幸的是,这使得Maven不可能自动检测并下载远程存储库中的文物的较新版本。

长期解决方案是向外部依赖项目的守护者请求,要求他们重新考虑如何识别和安装特定于平台的人工制品。

最新更新