通过maven编译的github项目之间的依赖关系

时间:2017-10-18 08:05:21

标签: java git maven github

寻找最佳选择,或者我不知道的解决方案:

  

(可能是不必要的背景)我开发了“项目A”,一个1990年代移植到Java的RPG视频游戏。目前从“项目B”开始,这是一个协调项目A作为MMORPG运行的服务器。

项目A,住在gitHub中,编译为maven,并且不依赖于项目B. 项目B,(将)生活在gitHub中,依赖于“项目A”,并渴望在maven中编译

  • 我希望两者都坐在单独的github存储库中
  • 我想项目B的pom.xml来指定所需的'项目A'的版本。
    • 如果通过指定git branch / version或maven artifactId / version来实现这一点,则不会有偏好。
  • 我想为项目B运行maven找到:
    • (如果可用)项目A指定版本的最后一个本地版本。
    • (后备)项目A在gitHub上的最新版本
  • 我不希望在某个网址(或来自项目A或B的git repo)中托管项目A Jars,因为它们会因图形而变大。还有那种东西让我误解了。
  • 我希望“项目B”通过“git clone ...”“正常工作”,然后是“mvn包”。

似乎有很多方法:

  • 通过第三方:例如jitpack
  • 通过maven reactor / modules(看似有几个子方法)
  • 从项目A
  • 运行'mvn install'
  • nexus,artifactory
  • 通过git子模块

2 个答案:

答案 0 :(得分:0)

  

我希望两者都坐在单独的github存储库中

那是微不足道的

  

我想项目B的pom.xml指定'项目A'需要的。

您可以使用版本来区分您的罐子

  

我想为项目B运行maven找到:   (如果可用)项目A指定版本的最后一个本地版本。   (后备)项目A在gitHub上的最新版本

该设计的专家

  

我不希望在某个网址(或来自项目A或B的git repo)中托管项目A Jars,因为它们会因图形而变大。还有那种东西让我误解了。

您是否考虑将资源与核心分开?即将它们放在单独的项目中,因为它们最不可能改变

现在的解决方案,在我的opionion你需要的是远程maven存储库(通过远程我意味着与本地相反,只要你想在你的项目上工作就可以访问。个人我会推荐nexus,但我可能在这里有偏见,鉴于我对它有最丰富的经验。 其他解决方案可能是github上的maven存储库。从未尝试过,但看起来ok

答案 1 :(得分:0)

你可以

  • 检查计算机上的两个项目,使用版本x.y.z构建项目A,然后使用该版本针对A构建B.这可以通过计算机上的本地Maven存储库进行。
  • 将B和A放入多模块项目中,以便您可以立即构建所有内容。这意味着两个项目都必须位于某个父目录的子目录中。
  • 使用您自己的Nexus / Artifactory。然后,您可以mvn deploy B在该存储库的版本中,并通过相同的一个解析它。或多或少像本地存储库一样工作,但使用和搜索更方便。