3

当同一个源代码主干或分支中有同一个 Web 服务的多个版本时,是否有构建源代码的约定?

这是我们的情况。

我们通过在 wsdl URL 中包含版本号来对 Web 服务进行版本控制,如下所示:

url/project/1.0/WebServiceA?wsdl

我将部署 1.1 版的 WebServiceA 和 1.0 版,因此 1.0 版的用户无需更改任何内容。WebServiceA 的 1.0 和 1.1 版将有自己独立的 Java 类。

我想在同一个 .war 文件中部署两个版本。(我们可以在 .war 中采用仅一个 Web 服务版本的策略,而在自己的 .war 中部署其他版本。当我们获得多个 Web 服务的多个版本时,这将导致要部署的 .war 数量增加。我宁愿只部署一个 .war。)

我在想我们应该为各种版本使用单独的包结构:

com.company.dept.ws.WebServiceA  (version 1.0)
com.company.dept.ws.v11.WebServiceA  (version 1.1)

com.company.dept.ws.WebServiceB  (version 1.0)
com.company.dept.ws.v11.WebServiceB  (version 1.1)
com.company.dept.ws.v12.WebServiceB  (version 1.2)

ws.、ws.v11. 和 ws.v12 下的 Java 类。将是单独的 Java 类。

你能看到这个约定在路上有什么问题吗?

如果有一个久经考验的约定来构建多个版本的 Web 服务代码的源代码,我想在自己编写之前听听它。

谢谢。

院长

4

1 回答 1

0

既然您说您希望这些版本都“在同一个源代码主干或分支中”,我认为部分答案取决于您使用的源代码控制系统,以及您是否计划修复旧版本中的错误.

如果您想修复旧版本中的错误,您需要能够在不同版本之间向前或向后集成更改。例如,假设您发现版本 1.0、1.1 和 1.2 中存在严重的安全问题。你不会想要修复它 3 次。大多数源代码控制系统将允许您在相关分支之间进行这种集成。有些(比如 Perforce,我相信还有 git,可能还有其他一些)可以让你在一个分支中集成文件之间的更改。(实际上,Perforce 的“分支”概念只是为了方便记录文件间集成)

因此,您需要考虑是否需要进行此类多版本修复,如果需要,您的源控制系统能否处理分支内集成。如果没有,那么您最好为每个版本使用单独的分支。

于 2009-10-06T03:45:08.457 回答