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

two logical java projects in one physical project

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

更新:

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

您应该创建 3 个项目。

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

搭建的时候会分别搭建A+C,B+C。这使一切都与公共代码分离。

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

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