【问题标题】:Dependencies between github projects that compile via maven通过 maven 编译的 github 项目之间的依赖关系
【发布时间】:2017-10-18 08:05:21
【问题描述】:
寻找最佳选择,或我不知道的解决方案:
(可能是不必要的上下文) 我开发了“项目 A”,这是 1990 年代移植到 Java 的 RPG 视频游戏。目前开始于“项目 B”,一个协调项目 A 以作为 MMORPG 运行的服务器。
项目 A,位于 gitHub 中,在 maven 中编译,对项目 B 没有依赖关系。
项目 B,(将)存在于 gitHub 中,依赖于“项目 A”,并渴望在 maven 中编译
- 我希望两者都放在单独的 github 存储库中
- 我希望项目 B 的 pom.xml 指定所需的“项目 A”的版本。
- 如果通过指定 git 分支/版本或 maven artifactId/version 来实现,则无偏好。
- 我想为项目 B 运行 maven 以找到:
- (如果可用)项目 A 的指定版本的最后一个本地构建。
- (后备)项目 A 在 gitHub 上的最新版本
- 我不希望在某个 url(或来自项目 A 或 B 的 git repo)中托管项目 A Jars,因为它们会因图形而变大。这种事情也让我感到不舒服。
- 我希望“项目 B”通过“git clone ...”“正常工作”,然后是“mvn 包”。
似乎有多种方法:
- 通过第 3 方:例如 jitpack
- 通过 Maven 反应器/模块(似乎有几种子方法)
- 从项目 A 运行“mvn install”
- 关系,人工制品
- 通过 git 子模块
【问题讨论】:
标签:
java
git
maven
github
【解决方案1】:
我希望两者都放在单独的 github 存储库中
这很简单
我希望项目 B 的 pom.xml 指定所需的“项目 A”的版本。
你可以使用版本来区分你的罐子
我想为项目 B 运行 maven 以找到:
(如果可用)项目 A 的指定版本的最后一个本地构建。
(fallback) 项目 A 在 gitHub 上的最新版本
这是 maven 的设计
我不希望在某个 url(或来自项目 A 或 B 的 git repo)中托管项目 A Jars,因为它们会因图形而变大。那种事情也让我感到不适。
您是否考虑过将资源与核心分开?即把它们放在单独的项目中,因为它们最不可能改变
现在的解决方案,在我看来,你需要的是远程 maven 存储库(远程我的意思是与本地相反,只要你想处理你的项目就可以访问它。我个人会推荐 nexus,但我可能在这里有偏见,鉴于我对此有最多的经验。
其他解决方案可能是 github 上的 Maven 存储库。没试过,但看起来ok
【解决方案2】:
你可以
- 检查您计算机上的两个项目,使用版本 x.y.z 构建项目 A,然后使用该版本针对 A 构建 B。这通过您计算机上的本地 Maven 存储库工作。
- 将 B 和 A 放入一个多模块项目中,这样您就可以一次构建所有内容。这意味着两个项目都必须位于某个父目录的子目录中。
- 使用您自己的 Nexus/Artifactory。然后你可以
mvn deployB 在这个存储库的一个版本中,并通过同一个版本在 A 中解析它。工作方式或多或少类似于本地存储库,但使用和搜索更方便。