WSDL生成可重复的构建

时间:2012-12-14 11:00:17

标签: java maven wsdl axis wsdl2java

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

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

缓存WSDL的位置和方式完全取决于您,但将其保留在版本控制中是一个快速而简单的选择。

答案 1 :(得分:0)

我会下载WSDL文件并将其与项目的其余部分一起放入源代码管理中。

主要优点是它保证了可重复的构建。如果您在每个构建中下载它们,则它是不可重复的。例如,假设您构建并部署到开发或测试环境,将应用程序注销,然后构建并部署到实时。如果WSDL已更改,那么您的实时构建与测试中签署的内容不同,并且可能以不同的方式工作。如果您有网络通信问题,那么您甚至可能根本无法构建。

这意味着您不会自动获得最新版本的WSDL,但这是一件好事。

答案 2 :(得分:0)

如果你知道网络服务有一个固定的wsdl,最好使用它的本地副本。

如果wsdl本身可能会发生变化,最好总是为你的构建使用url。

如果网络故障是一个问题,请创建两个单独的构建配置文件(在maven中),一个用于本地,另一个用于URL。