打破单一 java 应用程序

Breaking a monolithic java app

我正在将一个单一的 Java 应用程序分解成更小的模块,这样我们就可以更好地进行测试等。我看到了大部分好处,但也看到了一些问题:

我的审问是围绕流程:我以前做过,但需要刷新我的流程。

您遵循了哪些良好做法或问题?

对于这个项目,我们使用 Maven 和 git。

编辑: 我意识到这是一个非常广泛的问题,我简化了。

这个问题有点宽泛,不过我还是要试一试。

Sonatype 有两本不错的在线书籍:

当然还有 the Maven site 本身。

工件名称源自 <artifactId><version>。请参阅 Apache Maven JAR Plugin / Usage, Guide to naming conventions on groupId, artifactId and version and also Understanding Maven Version Numbers. See Maven Central for examples how it is done by others. A good approach from my POV is to include the last part(s) of the <groupId> in the <artifactId> like Apache Commons 做到这一点。这样你就可以很容易地通过它的名字来识别一个工件。

"keep -SNAPSHOT in your poms?"

  • 作为 <dependencies> 的消费者,这取决于您是否决定仅依赖固定发布的版本,其行为在您使用时不会改变。或者您是否需要在您使用的 <dependencies>-SNAPSHOT 中实现的最新功能。
  • 对于项目的 <version> 本身,您可以保留 -SNAPSHOT 直到准备发布。发布时,您会在发布过程的短时间内更改为发布版本。在它之后你立即切换到更高的 -SNAPSHOT 版本。

有关在发布周期结束时要完成的任务,请参阅 Maven Release Plugin 中的示例。

顶层父 POM 中的 <dependencyManagement> 部分很有意义。

Maven 和 Git 是极好的选择。 ;)