在Java Web应用程序/客户端中管理Web服务/ xml绑定的生成工件的最佳方法?

时间:2010-02-19 08:57:31

标签: java eclipse web-services maven-2 jaxb

我正在研究一些使用JAXB绑定的Web服务(在JAX-WS或spring-ws中)。使用这些绑定时,总会有一些代码从WSDL自动生成以绑定消息对象。我正在努力找出能够完成这项工作的最佳方式,以便它易于使用,难以破解并与IDE很好地集成(主要使用eclipse)。

我认为有几种方法可以解决这个问题。我现在看到的三个主要选项是:

  • 生成代码,保留源工件并将其检入存储库。优点:可以轻松地与IDE集成(源代码突出显示等),在构建系统中运行。缺点:每次重新生成时生成的代码都会更改,可能会创建嘈杂的提交。它也是多余的,因为WSDL文件通常已经签入。
  • 在构建过程中生成代码。不要保留源工件或仅将它们保存在输出目录中。优点:修复前一个缺点。缺点:难以与IDE集成,但是这个构建步骤是否可以自动运行?我目前在我的一个项目上使用它,但是第一次检查项目时它看起来很破碎,这是一个小麻烦。
  • 将生成的绑定保存在maven或手动更新的jar中包含的单独库(jar)中,具体取决于您的构建过程。我从a thread on java.net得到了这个想法。这似乎更稳定,并使用显式版本,但似乎有点重量级。

您将实施以下哪个选项以及如何实施?我们目前正在使用maven和eclipse,所以在这方面的任何想法都会很棒。我认为这个问题可以推广到大多数其他构建系统和IDE组合,甚至可能是其他语言。

2 个答案:

答案 0 :(得分:2)

我选择了3.如果您已经拥有自己的存储库(以及可选的CI),那就不是那么重量级了。所需要的只是一个简单的POM。甚至可以包含一些实用程序/包装器/构建器类(通常可以使生成的类使生活更轻松)并在多个项目中使用它们。

答案 1 :(得分:1)

我会选择2并在“标准”${project.build.directory}/generated-sources/<toolname>位置生成代码,作为构建过程的一部分。使用生成的源得到了m2eclipse的良好支持(使用 Maven&gt;更新项目配置一旦生成了源),如果我记得很清楚,也可以使用maven eclipse plugin(即文件夹将被添加到 Java构建路径)。实际上,我认为NetBeans也处理这个问题。对于Idea不确定。

对于生成本身,如果我理解正确,您可能需要maven-jaxb2-plugin