WSDL生成可重复的构建

the*_*toy 5 java axis wsdl wsdl2java maven

我被要求查看现有基于服务的应用程序的构建过程.它有几个基于服务的模块,其中一些服务由第三方提供.构建过程中使用的wsdls通过http降低到构建中.为了竞争,我使用maven 3和axistools-maven-plugin从wsdl生成类.

这开始让我思考.如果远程服务器关闭,我的构建将失败.如果wsdl更改我的构建也可能失败.我想要这个吗?远程wsdls在service/wsdl名称中进行了版本化,因此不应对API进行重大更改,但它们是第三方,我真的不能依赖此约定.

在本地下载wsdl并根据源代码管理的文件构建是不是更好?我会有一个适当的可重复构建,然后没有远程服务器不可用的危险.但这似乎并不敏捷.如果我采用这种方法,那么我如何才能知道远程wsdl中的任何变化?

我敢肯定,我不是第一个想从wsdls构建最佳实践的人.任何人都可以强调哪种机制被认为是从远程wsdls生成的服务生成可修复构建的最佳实践方式?

小智 4

如果您想要快速可靠的构建,那么黄金法则就是不要依赖任何您无法控制的东西!

在您的情况下,我将在本地缓存 WSDL,以便在原始源不可用或发生更改时构建不会失败。但是,如果您完全担心 WSDL 可能会发生变化,那么我还将创建一个每天运行的单独构建作业,并将缓存的副本与原始副本进行比较,如果它们不同,则会失败。这为您提供了两全其美的优点...可重复的构建以及 WSDL 更改时的早期警告。

在何处/如何缓存 WSDL 完全取决于您,但将其保留在版本控制中是一个快速而简单的选择。