打破单一 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 是极好的选择。 ;)
我正在将一个单一的 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 是极好的选择。 ;)