Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 放置自动生成代码的好地方?_Java_Code Generation_Axis2_Axis - Fatal编程技术网

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

Java 放置自动生成代码的好地方?,java,code-generation,axis2,axis,Java,Code Generation,Axis2,Axis,我们有一堆自动生成的类,其中大部分是Axis2存根、骨架等。对于一些复杂的WSDL,Axis2生成了大量java bean、存根等。我确信使用自动生成时也有其他情况 目前,我们将它们视为代码库的其他第一类成员,它们存储在相同的包中 然而,在执行重构、清理等操作时,很难消除来自这些自动生成类的警告。例如,如果我试图清理代码以便使用Java1.5泛型,那么没有好的方法可以知道这些有问题的类中有多少是我们的,而不是自动生成的 我应该将这些自动生成的部件分离到不同的包中吗?你们如何将这些工件存储在存储库

我们有一堆自动生成的类,其中大部分是Axis2存根、骨架等。对于一些复杂的WSDL,Axis2生成了大量java bean、存根等。我确信使用自动生成时也有其他情况

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

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

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

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


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

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

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

如果要将它们检查到源代码管理系统中,请不要这样做。让它们通过构建步骤重新生成。如果它们是从WSDL生成的,请检入WSDL,而不是结果代码

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


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

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

使用maven和axistools maven插件,生成的源代码放在“target”目录中的不同源文件夹中。此目标目录是maven生成所有文件和内容的地方,因此可以对其进行清理。

这非常方便,因为生成的文件也显示在IDE中的另一个源文件夹中。

最佳实践摘要:

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

还将花费构建时间这是一个不错的主意,它可以为需要生成的复杂对象节省一些构建时间。对于简单的对象,它不会产生太大的时间差