如何保持两个 Maven 项目松散耦合?

How can I keep two Maven projects loosely coupled?

我有依赖于 Maven 项目 B 的 Maven 项目 A。这些由我在 GitHub 存储库中维护。项目 B 是一个实用项目,将被许多其他项目使用。项目 A 是一个使用项目 B 中的实用程序的应用程序。我的 Maven 项目不存在于任何 public 存储库中,目前正在开发中。
现在,我想让另一个人来整合我的项目A。我不能把我的项目打包发送过来,因为它们会不断变化。 He/she 将不得不在 his/her 构建环境中检查我的代码,并将我的部分集成到 his/her 应用程序,同时定期从我的 repo 中提取更改。
这里的重点是我希望这两个项目齐头并进。谷歌搜索后,我得到了这两个解决方案:
1)让他们成为同一个父项目的兄弟姐妹。这种方法的优点是集成商在签出父项目时将始终获取所有依赖项。但是,此解决方案将这两个项目永远紧密地结合在一起。项目 B 是一个实用项目,将被其他不关心项目 A 的项目使用。
2) "Manually" 指示集成商检查两个项目并处理对 his/her 端的依赖,例如通过将项目安装到 his/her 本地 Maven 存储库或让 IDE 解析工作区依赖项。这样虽然我必须手动将依赖项告诉集成商并且 he/she 必须记住将更新版本重新安装到本地仓库。

是否有任何其他策略可以让集成器以自动方式获取所有依赖项并能够在无需人工干预的情况下自动构建我的代码?另外一个要求是项目B不能和项目A紧耦合,以后可以被其他项目自由使用。

我想到的一些事情与 Maven 依赖方案的不同结构有关,或者可能与支持该过程的持续集成组件有关。然而,我并没有一个明确的策略来说明我该如何继续,或者如果可能的话……有什么线索吗?

如果你的项目是开源的,你可以使用这个过程:http://central.sonatype.org/pages/ossrh-guide.html 以避免必须托管您自己的 Maven 存储库。

您的另一个选择是建立您自己的 Nexus/Maven 存储库,并让依赖于您的工件的项目在其 settings.xml 文件中配置另一个存储库,以便他们可以检查您的快照部署联系回购。您可以根据需要将快照部署到您的 Maven 存储库。