使用maven/jenkins构建服务器/客户端

使用maven/jenkins构建服务器/客户端,maven,jenkins,client-server,pom.xml,Maven,Jenkins,Client Server,Pom.xml,我在征求关于如何配置客户端/服务器构建的建议。我们有一个客户机-服务器体系结构。客户端和服务器的版本紧密耦合,这意味着 它们都存储在同一个git存储库中。 在开发过程中,必须同时对客户端和服务器进行更改,以在某些情况下保持兼容性 客户端代码取决于服务器代码 目前,他们不共享父pom。 我想知道从同一个分支编译客户端和服务器的最佳方式是什么。请记住,分支始终是创建的,开发人员可以使用参数化构建在私有分支上运行作业 选项: 创建组合父pom。 创建一个Jenkins作业并使用shell命令执行两个m

我在征求关于如何配置客户端/服务器构建的建议。我们有一个客户机-服务器体系结构。客户端和服务器的版本紧密耦合,这意味着

它们都存储在同一个git存储库中。 在开发过程中,必须同时对客户端和服务器进行更改,以在某些情况下保持兼容性 客户端代码取决于服务器代码 目前,他们不共享父pom。 我想知道从同一个分支编译客户端和服务器的最佳方式是什么。请记住,分支始终是创建的,开发人员可以使用参数化构建在私有分支上运行作业

选项:

创建组合父pom。 创建一个Jenkins作业并使用shell命令执行两个maven构建 将分支名称添加到版本并将服务器部署到工件 Maven模 您可以在同一Maven构建中使用模块来管理客户机和服务器项目。在继承意义上,您不必有父POM,但还需要一个POM来聚合这两个项目。您将需要以下目录/文件结构通常所有POM文件都命名为POM.xml,为了清晰起见,我在这里重命名了它们:

main-pom.xml
server/
  server-pom.xml
client/
  client-pom.xml
在main-pom.xml中,在模块部分指定要构建的项目:

<modules>
  <module>server</module>
  <module>client</module>
</modules>
模块名必须是目录名。不要担心顺序,Maven会根据依赖关系来解决


如果在客户端和服务器项目版本、通用依赖项、插件等之间共享属性有意义,您可以将此方法与真正的父POM结合起来。

一些人提出了一个问题,即由于这两个项目是独立的可执行文件,它们不应该位于同一POM中,您对此有何想法?只要每个项目都有自己的POM,它们是单独建造的,并且仍然生产自己的人工制品。聚合不会改变这一点,它只是将两个版本分组。@user3722667您有机会尝试模块吗?