特定于平台的Maven依赖项

时间:2017-03-12 03:29:30

标签: java maven

Here is the Maven Repository我正在尝试使用它。我的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存储库?

谢谢!

1 个答案:

答案 0 :(得分:0)

应该有一个[且只有一个]工件可通过坐标[group-id,artifact-id,version]进行寻址。

这些特定于平台的工件可能已手动推入存储库,无法通过预期的maven依赖关系POM元素单独引用。

最简单的短期解决方案是手动提取依赖项/依赖项,并在本地存储库中使用自己唯一的maven坐标安装每个依赖项/依赖项。然后使用项目POM中元素的本地坐标来引用该工件。

不幸的是,maven无法自动检测并下载远程仓库中较新版本的工件。

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