一个物理项目中的两个逻辑Java项目

时间:2015-11-12 13:09:08

标签: java architecture

我有一个项目,它有两个不同的部分 - 一部分将发送消息给rabbitMQ,另一部分将接收和处理来自rabbitMQ的消息。这两个部分都使用相同的常见java类。例如,将发送和接收的java类包装器。我想我应该在maven或gradle上创建一个java项目,但是以两种不同的方式构建它 - 对于第一和第二部分。或者将它拆分为2个项目可能更好,但如何共享常见的java文件?

更新

我有2个项目:项目A将对象发送到rabbitMQ队列,项目B从rabbitMQ队列接收对象,A和B都使用公共类,因此这些类应该在A和B之间共享。目前,我创建了一个maven项目其中包括A和B作为模块。我可以同时编译它们。所以我没有第三个(常见的java类)项目,一切都在一个地方。所以我只是想问一下如何正确和更好地做到这一点。我应该将它分成3个项目还是保持原样或以其他方式进行?

1 个答案:

答案 0 :(得分:3)

你应该创建3个项目。

  • A)发送
  • B)一个用于接收和处理
  • C)一个用于公共代码

构建时,您将分别构建A + C和B + C.这使得所有内容与公共代码分离。

将公共代码保存在单独的项目中的原因是它充当定义两者之间的API的中介。考虑大规模部署。对于这三个项目中的每个项目,您可能都有单独的开发人员,因此您可以选择版本发布以明确定义依赖项的时间。如果一切都在一个项目中,一切都需要立即更改,但您可能不希望您的“公共代码”开发人员弄乱您的发送代码(例如,为了编译所有内容)。如果不同的构建部署在不同的机器上,则只需要更新公共代码,而不是所有项目。分离项目可能需要一些额外的设置工作,但将来会避免许多麻烦。

除非您特别需要始终将A + B + C部署在一起,否则3个项目是最佳设计。一个例子是制作您自己的独立TX / RX协议(例如,步话机),其中客户端和服务器需要共处,并且没有中央服务器。但即使在这种情况下,为了使其与使用您的协议的其他应用程序兼容,将其分解为3个项目仍然很有意义。