在java webapp / client中管理Web服务/ xml绑定的生成工件的最佳方法?

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

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

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

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

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

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

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