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

时间:2017-03-31 18:17:18

标签: git maven build decoupling

我有Maven项目A,它依赖于Maven项目B.这些是由我在GitHub存储库中维护的。项目B是一个将被许多其他项目使用的实用程序项目。项目A是一个利用项目B中的实用程序的应用程序。我的Maven项目在任何公共存储库中都不存在,目前正在开发中。
现在,我希望另一个人与我的项目A集成。我不能只打包我的项目并将它们发送出去,因为它们会不断变化。他/她必须在他/她的构建环境中检查我的代码并将我的部件集成到他/她的应用程序中,同时定期从我的仓库中取出更改。
这里的要点是我希望两个项目齐头并进。谷歌搜索后,我最终得到了这两个解决方案:
1)让他们成为同一父项目的兄弟姐妹。这种方法的优点是,在签出父项目时,集成商将始终采用所有依赖关系。但是,这个解决方案永远将两个项目紧密结合在一起。项目B是一个公用事业项目,将由其他不关心项目A的项目使用 2)“手动”指示集成商检查两个项目并处理对他/她的结果的依赖,例如通过将项目安装到他/她的本地Maven仓库或让IDE解析工作区依赖项。这种方式虽然我必须手动告知对集成商的依赖,他/她将不得不记得将更新版本重新安装到本地仓库。

是否有任何其他策略让集成商以自动方式获取所有依赖项并能够自动构建我的代码而无需人工干预?另一个要求是项目B不会与项目A紧密耦合,因此将来可以被其他项目自由使用。

我想到的一些事情与Maven依赖项方案中的不同结构有关,或者可能是支持该过程的持续集成组件。然而,我没有明确的策略如何继续这样做,或者甚至是否可能......任何线索?

1 个答案:

答案 0 :(得分:0)

如果您的项目是开源的,则可以使用此过程:http://central.sonatype.org/pages/ossrh-guide.html 避免必须托管自己的Maven回购。

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