我该如何在Java SE 5中添加javax.annotation.Generated?

6
我正在处理一个项目,必须在Java SE 5和Java SE 6上运行。我最近开始使用了一个工具,该工具会向生成的代码添加@Generated注释,并且我想保留这些注释。似乎javax.annotation.Generated在Java 5 EE中,而在Java 6 SE及更高版本中出现,但不在Java 5 SE API中。
如何最好地包含javax.annotation.Generated,以便将其发送给客户端,在Java SE 5和Java SE 6上都可以正常运行?我只需要包含额外的jar文件吗?如果是,那么@Generated位于哪个jar文件中?
3个回答

11
您可以从Maven中央仓库的此位置获取javax.annotation.Generated类及其它各种类。您只需下载JAR文件,无需使用Maven即可获取它们。
答案由GrepCode提供。

3
感谢@skaffman。对于Gradle构建,应该使用compile 'org.glassfish:javax.annotation:10.0-b28'来定义依赖关系。 - JJD
3
也可以通过 compile 'javax.annotation:jsr250-api:1.0' 获取。 (注:这是一个代码片段,指的是在编程中可以使用该语句来获取某项功能) - nicopico

5
根据 javax.annotation.Generated javadoc,它的保留策略是Source,因此该注解不会编译到您的类中(具有和不具有该注解的结果类是相同的)。 因此,只要您分发已编译的类,您的客户永远不需要包含此注解的任何jar文件。

1
感谢提供额外信息,这很有用。我在问题中忘记提到了,但我们确实也向该客户提供源代码发布。 - rob

1

你可以将它们注释掉,这些注释只会在源代码级别保留。


如果我只需要生成一次代码并且永远不需要再次生成,那么这肯定是一个有效的解决方案,但我也会担心这可能会给未来的维护人员带来任何麻烦,他们可能没有意识到在重新生成代码后只需要重新注释注解。 - rob
如果您正在使用Eclipse,您可以添加一个构建器,例如使用sed将它们删除或注释掉。或者一个构建脚本同样有效。 - MahdeTo
真的,但仍需要比添加jar文件更多的努力。不过,感谢这个“超越常规”的解决方案。 :) - rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接