如何组织一个拥有两个独立应用程序的Maven项目?

时间:2017-05-29 06:35:17

标签: java maven

我正在处理Web服务/ API和相应的API客户端。两者都是Maven项目。

我目前正在将这两个项目作为单独的项目进行工作。但是,我开始相信将这两个项目合并为一个可能会更好,因为......

  1. ......没有API,API客户端毫无价值 - 它无法正常运行 没有它。
  2. ... API的集成测试目前在API客户端中 项目。我正在使用API​​资源运行集成测试 API客户端项目中提供的抽象。
  3. 如果我将这两个项目合并为一个项目,如何在同一个Maven项目中将这些项目分开?我希望能够彼此独立地构建 API或API客户端。

2 个答案:

答案 0 :(得分:0)

我认为项目分离通常是一种很好的做法。如果您从小型组件构建终端系统,则始终具有更大的范围和灵活性。此外,一个模块的更改不会影响其他模块。此外,如果您想为客户端添加第二个实现,分离将是更好的选择。我绝对投票让他们分开。

在合并时:我认为即使你的客户端功能很小,你也应该在合并前三思而后行。

如果您仍然相信合并,那么对于构建,我建议您使用Maven profiles来自定义构建。

答案 1 :(得分:0)

我目前使用的是多模块maven项目模式,几乎与您的完全相同。

parent pom
+---API
+---WS
+---client-lib

在同一个maven 项目中将两个工件作为不同的模块绝对没有问题 ,而不是两个单独的项目

要配置,只需将父pom打包设置为pom,建立子文件夹并使用<modules>定义以正确的构建顺序列出每个子模块。

如何单独构建它们?你只需进入子目录并从那里构建。

cd client-lib
mvn clean install

有一点需要注意 - client-lib的依赖关系需要已经构建过一次。但是对于增量更改,您可以在子目录(子模块)中再次运行maven。

至于您提到的运行集成测试,还有一个优点,即所有子模块都可用于集成测试。您甚至可以添加名为integration-tests的子模块。

parent pom
+---API
+---WS
+---client-lib
+---integration-tests

maven进一步祝你好运!