java - 打破单一的java应用程序

标签 java git maven dependency-management

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

  • 核心应用程序将有自己的生命周期。
  • 每个模块都有自己的生命周期。

我的审讯围绕流程:我过去曾经这样做过,但需要刷新我的流程。

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

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

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

最佳答案

这个问题有点宽泛,但我还是要尝试一下。

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

当然,the Maven site本身。

Artifact 名称源自<artifactId><version> 。请参阅Apache Maven JAR Plugin / Usage , Guide to naming conventions on groupId, artifactId and version还有Understanding Maven Version Numbers 。请参阅Maven Central例如其他人是如何完成的。从我的 POV 来看,一个好方法是包含 <groupId> 的最后一部分。在 <artifactId>Apache Commons可以。这样您就可以通过名称轻松识别 Artifact 。

“在你的 poms 中保留 -SNAPSHOT 吗?”

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

请参阅 Maven Release Plugin 中的示例用于在发布周期结束时完成的任务。

一个<dependencyManagement>顶级父 POM 中的部分是有意义的。

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

关于java - 打破单一的java应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43241318/

相关文章:

java - Applet 在 JavaFX 应用程序中不可见

java - BeanNotOfRequiredTypeException : Bean named X is expected to be of type X but was actually of type 'com. sun.proxy.$Proxy

java.lang.NoSuchMethodError : org. hibernate.annotations.common.reflection.java.JavaReflectionManager.setMetadataProvider

maven - 无法执行目标 org.codehaus.mojo :exec-maven-plugin. 命令执行失败

java - 从封闭字符串中提取 IP 地址和端口的简单 Java 正则表达式

Git 重置为特定评论并跳回当前提交

git - 我们可以将 git 命令输出输入到另一个 git 命令吗

ruby - Ruby Shell 中的转义字符

ant - 我们可以在 ANT 中使用 pom.xml 吗

java - Java线程中的 "blocked Count"和 "Waited Count"是什么意思?