4

我们有一堆自动生成的类,主要是 Axis2 存根、骨架等。对于一些复杂的 wsdls,Axis2 会生成大量的 java-bean、存根等。我相信在使用自动生成时也会有其他情况。

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

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

我应该将这些自动生成的部分分成不同的包吗?你们如何将这些工件存储在存储库中?

编辑:我在下面的很多答案中看到“在构建过程中生成”。虽然我看到了这样做的好处,但我不太明白如何摆脱存储库签入。

我的代码对其中一些类具有编译时依赖性,对我来说,开发期间的构建是 Eclipse 中的“ctrl-s”。我们使用 ant 脚本来生成编译、运行测试和生成可交付成果。

4

6 回答 6

7

最佳实践总结:

  • 使其可重复
    • 创建生成的代码作为构建过程的一部分。
    • 不要将生成的代码签入源代码管理。(检查源代码。例如 WSDL)
  • 将生成的代码与托管代码分开
    • 为生成的输出使用不同的源文件夹。
    • 交付一个单独的 .jar,以便生成的代码成为依赖项。
    • 考虑使用不同的 IDE 项目(或 maven 模块)
于 2009-06-04T14:21:27.443 回答
6

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

于 2009-06-04T12:01:17.990 回答
6

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

于 2009-06-04T12:13:24.173 回答
2

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

我建议让该构建步骤为生成的代码生成一个完全独立的 .jar,然后删除源文件,以尽可能避免维护人员尝试手动编辑自动生成的源代码。

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

于 2009-06-04T12:11:00.387 回答
1

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

于 2009-06-04T12:08:54.777 回答
0

使用 maven 和 axistools-maven-plugin,生成的源文件位于“目标”目录中的不同源文件夹中。这个目标目录是 maven 生成所有文件和内容的地方,因此可以对其进行清理。
这是非常方便的,因为生成的文件也出现在 IDE 中的不同源文件夹中。

于 2009-06-04T12:18:05.570 回答