放置自动生成代码的好地方?

时间:2009-06-04 11:57:15

标签: java code-generation axis2 axis

我们有一堆自动生成的类,主要是Axis2存根,骨架等。对于一些复杂的wsdls,Axis2生成一个java-beans,stubs等的TON。我确信在使用自动生成时还有其他情况。

现在我们将这些视为代码库的其他第一类成员,并将它们存储在相同的包中。

然而,当进行重构,清理等时,很难清除来自这些自动生成的类的警告。例如,如果我试图清理代码以便使用Java1.5泛型,那么就没有什么好方法可以知道这些违规类中有多少是我们自动生成的。

我应该将这些自动生成的零件分离到另一个包装中吗?你们如何将这些工件存储在存储库中?

编辑: 我在下面的几个答案中看到“在构建过程中生成”。虽然我看到了这样做的好处,但我不知道如何摆脱存储库检查。

我的代码对其中一些类有编译时依赖性,对我来说,开发过程中的构建是eclipse中的'ctrl-s'。我们使用ant-scripts生成编译,运行测试并生成可交付成果。

6 个答案:

答案 0 :(得分:7)

最佳做法摘要:

  • 让它重复
    • 在构建过程中创建生成的代码。
    • 不要将生成的代码检查到源代码管理中。 (请检查源代码。例如WSDL)
  • 将生成的代码与托管代码分开
    • 使用其他源文件夹生成输出。
    • 提供单独的.jar,以便此生成的代码成为依赖项。
    • 考虑使用其他IDE项目(或maven模块)

答案 1 :(得分:6)

我将这些文件放入他们自己的项目中。这样,我可以在一个地方添加构建文件,我需要的所有补丁等,并关闭生成代码的所有警告。

答案 2 :(得分:6)

您可以保留相同的包但使用不同的源文件夹(类似generated-src),这就是我们所做的。我实际上是关于在源代码库中保存生成的代码的整个想法。我们这样做是为了方便项目中的其他开发人员,但通常在构建过程中重新生成源代码是有意义的。如果生成的代码不太可能改变,那么使用单独的项目并生成jar可能更实用。

答案 3 :(得分:2)

如果您要将它们检入源控制系统,不要。让它们通过构建步骤重新生成。如果它们是从WSDL生成的,请检查WSDL,而不是生成的代码。

我建议让构建步骤为生成的代码生成一个完全独立的.jar,然后删除源文件,只是为了使维护者尽可能不会尝试手动编辑自动生成的源代码。

这样,您的重构活动会将自动生成的代码视为第三方库,而不是操作源。

答案 4 :(得分:1)

对于每组生成的工件,创建一个执行生成的新项目,然后将工件捆绑到JAR和源ZIP文件中,然后从您的应用程序中引用它们。保持良好和独立,并强调生成的工件不是由IDE更改的事实。

答案 5 :(得分:0)

使用maven和axistools-maven-plugin,生成的源位于'target'目录中的不同源文件夹中。这个目标目录是maven生成所有文件和内容的地方,因此可以清理它 这非常有说服力,因为生成的文件也出现在IDE中的不同源文件夹中。