java - 特定于平台的 Maven 依赖关系

标签 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,而该 JAR 根本不存在。有没有办法告诉 Maven 它正在寻找的 JAR 文件将被命名为其他名称?或者这根本就不是一个有效的 Maven 存储库?

谢谢!

最佳答案

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

这些特定于平台的 Artifact 可能是手动推送到存储库中的,并且无法通过预期的 Maven 依赖项 POM 元素单独引用。

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

不幸的是,这使得 maven 无法自动检测并下载远程存储库中较新版本的 Artifact 。

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

关于java - 特定于平台的 Maven 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743406/

相关文章:

java - 如何配置Caucho Resin的Java类路径到系统的库目录

maven - 正则表达式不起作用 Maven 文件集

Maven:发布插件在 <distributionManagement> 中看不到我的 <repository>

java - 我是否必须为 log4j 中的所有类创建附加程序?

java - JFrame 闪光图像 1/100 秒

Java 字符串——比较 charAt() 和索引运算符 []

maven - 我可以在 Maven 项目中运行 IntelliJ 单元测试而不重新运行 Maven 目标吗?

spring-boot - pom.xml maven 中的属性标签是什么意思?

Android Maven 类未找到

java - 可能覆盖数据库表