是的,这是一个真正的问题。
我想在基于 Maven 的多模块项目中满足以下工作流程:
- 在模块 X 中进行更改
- 在模块 Y 中运行 Java 应用程序
模块 Y 可能直接或间接依赖于模块 X,我需要递归地编译受另一个更改影响的所有模块。我不想运行测试。
在 Maven 中,我如何在不必每次都编译和安装所有内容的情况下做到这一点?
为什么每次都要制作和安装?我发现的最简单的解决方案是mvn install
一次。然后,您可以进入各个项目并随时构建它们。如果您需要确保链条被拾起,只需从顶部构建并使用mvn -amd -pl projectname
这表示要构建一个特定的项目及其依赖项。
发展阶段
我认为您不能仅使用 Maven 轻松做到这一点。但是,在开发过程中,您可以跳过添加-DskipTests
.
maven 无法正确进行增量编译。正确的做法是使用 IDE,它将 maven 项目导入 IDE 的项目中,然后您可以快速轻松地进行开发。IntelliJ IDEA 与 maven 配合得很好。
生产阶段
对于发布版本,您可以在目标工件中使用显式版本。因此,在模块 X 发生更改后,如果您构建最终发布工件模块 Y,您可以在其中添加显式依赖项。在这种情况下,X 和 Y 之间的所有模块都将具有旧版本(但您应该假设它们将与新的 X 一起使用,这总是不正确的)。