gpt4 book ai didi

maven - 如果我的开源项目由 maven 管理并且依赖于不在 maven 存储库中的库怎么办?

转载 作者:行者123 更新时间:2023-12-02 00:13:12 25 4
gpt4 key购买 nike

想象一下这种情况。我有一个使用 Maven 管理的开源项目,它依赖于一个不在 Maven 存储库中的知名库(例如 jpathwatch)。我怎样才能让它发挥作用?

直接的方法是将 jpathwatch 安装到本地 maven 存储库。然而,这给查看我的项目源代码并希望自己构建它们的人增加了负担。他们会遇到 maven 错误,然后查看 README 文件,或者干脆放弃尝试。

有没有一种干净的方法可以解决这个问题?我必须回到 ANT 吗?

最佳答案

最干净的方法是将库上传到中心(或者失败,如果您的项目不是开源的,则上传到您的项目托管的 Maven 存储库)。

guide on uploading 3rd party artifacts to central其中详细说明了在原始项目不想上传 Artifact 的情况下如何上传 Artifact 。

也有可能只在您自己的 groupId 下部署 Artifact ...更多是最后的手段,或者如果官方方式对您来说太慢,则为首选。

如果你想成为一名优秀的开源公民,请将这些东西上传到中心,以便其他人受益。

in-project repositories 这样的黑客不适用于住在公司存储库管理器后面并拥有 <mirrorOf>*</mirrorOf> 的人在他们的 ~/.m2/settings.xml (他们应该有)

system 这样的黑客当人们尝试将您的 项目作为传递依赖项来使用时,作用域会导致永无止境的痛苦世界...因为猜猜是什么${basedir}从本地存储库而不是 react 堆解析您的项目时的评估?尝试 ~/.m2/repository/your-groupId/your-artifactId/your-version这绝对不是您放置第 3 方 jar 文件的位置。

system scope hack 仅在构建最终 Artifact 时有效,即使那样它也可能产生意想不到的副作用(比如被烘焙到 JAR list 中的类路径......它将是你机器的磁盘路径......而不是用户部署到的路径)

只有三种解决方案:

  1. 将其部署到远程仓库(优先选择中央仓库)
  2. 将它安装在本地仓库中(最终用户会很痛苦)
  3. Fake 模块解决方案(其中您伪造一个 JAR 模块并将“内置”jar 替换为您想要分入的 jar,这样该模块现在就是构建 Artifact 而不构建它......这将结束是选项 1 或 2,但比“在项目存储库中”的解决方案更不邪恶)

关于maven - 如果我的开源项目由 maven 管理并且依赖于不在 maven 存储库中的库怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14436069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com