2009-06-04 50 views
3

我们有很多自动生成的类,其中大多数是Axis2存根,骨架等。对于一些复杂的wsdls,Axis2生成一个TON的java-beans,存根等等。我相信在使用自动生成时也有其他情况。一个放置自动生成代码的好地方?

现在我们把它们当作我们代码库的其他第一类成员,并且它们存储在相同的包中。

但是做重构时,清理等它变得难以淘汰的是从这些自动生成的类来的警告。例如,如果我试图清理代码以便使用Java1.5泛型,那么没有什么好方法可以知道这些违规类中有多少是我们自己生成的类。

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

编辑: 我看到下了不少答案,“在构建过程中产生”。虽然我看到了这样做的好处,但我不太清楚如何从存储库签入中脱身。

我的代码有一些类和我编译时的依赖,发展过程中构建一个“CTRL-S”的日食。我们使用ant脚本来生成编译,运行测试并生成可交付成果。

回答

5

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

6

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

+0

也将花费你的编译时间相当多 – 2009-06-04 12:09:14

+0

好主意,它可以节省一些制作时间与需要复杂的物体产生。对于简单的物体,它没有太大的时差 – Salandur 2009-06-04 12:19:30

1

对于每一组生成的工件的,创建一个新的项目,其执行产生,然后向上束伪影成JAR和源ZIP文件,然后从您的应用引用它们。保持事物的美好和独立,并强调生成的构件不会被IDE更改。

2

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

我建议让构建步骤为生成的代码生成一个完全独立的.jar,然后删除源文件,以使维护人员尽可能不可能修改自动生成的源代码。

这样,你的重构活动将看到自动生成的代码像一个第三方库,而不是源被操纵。

0

使用maven和axistools-maven-plugin,生成的源文件位于“目标”目录中不同的源文件夹中。这个目标目录是Maven生成所有文件和东西的地方,所以它可以被清理。
这非常令人满意,因为生成的文件也出现在IDE中的其他源文件夹中。

7

的最佳实践摘要:

  • 让它重复
    • 创建生成的代码作为构建过程的一部分。
    • 请勿将生成的代码检入源代码管理。 (做检查在源。例如WSDL)
  • 保持生成的代码从托管代码
    • 使用用于产生输出不同的源文件夹分开。
    • 交付一个单独的.jar,以便生成的代码成为依赖项。
    • 考虑使用不同的IDE项目(或Maven模块)