我正在开发新的代码库并将系统迁移到新的框架。
我想弃用许多软件包,只是为了让其他开发人员明白这个软件包中的所有内容都不应再用于新开发。
表示整个软件包已被弃用的最佳方法是什么?
答案 0 :(得分:43)
我最近必须这样做并使用package-info.java
文件来弃用软件包。
http://www.intertech.com/Blog/whats-package-info-java-for/
仅使用包声明将<{1}}文件添加到包中:
package-info.java
在Eclipse中,用户从此包导入类的所有位置都将使用弃用警告加下划线。
答案 1 :(得分:12)
你自己说过:你想弃用里面包的所有内容,而不是包本身。该包只是一个命名空间,并且弃用命名空间会有不同的含义 - 比如不再使用此命名空间。与一样,不要向该命名空间添加任何新项目。
在您的情况下,我建议您弃用不应再使用的每个类的每个公共方法(和字段)。这在现代IDE中变得可见,并且开发人员在想要使用旧类和方法时会被警告。您可以查看代码并逐步重构,以消除这些类和方法的依赖关系。
答案 2 :(得分:7)
使用AspectJ。创建一个在使用包时发出编译器警告的Aspect:
public aspect DeprecationAspect{
declare warning :
call(* foo.bar..*(..)) : "Package foo.bar is deprecated";
}
答案 3 :(得分:2)
您可以使用@Deprecated
创建Package annotation并弃用任何包:)
答案 4 :(得分:2)
对于那些后来来的人...... 我的解决方案与IDEA&#34;替换路径&#34;
要查找的文字:(公共|受保护)+(\ s)(摘要)(\ s)(静态)(\或多个)的(最终)(\ S)*(类|接口|枚举|枚举)
替换为: @Deprecated \ n \ $ 1 \ $ 3 \ $ 5 \ $ 7 \ $ 9
选项:(选择)正则表达式
目录: {选择目录}
答案 5 :(得分:0)
如之前@muymoo所述,您可以使用package-info.java
文件。但是您所能做的就是在文件的 JavaDoc 中添加一个@deprecated
警告:
/**
* @deprecated This package is deprecated, use {@link my.new.pkg} instead.
*/
package my.old.pkg;
在这里,JavaDoc实际上是您唯一的选择,您不能 @Deprecate
使用“适当的”代码内注释的软件包
@Deprecated
package my.old.pkg;
将导致Java 8中的编译错误
$ java -version
java version "1.8.0_191"
$ javac package-info.java
package-info.java:6: error: modifier deprecated not allowed here
这里唯一真正的干净选项是真正弃用程序包中的所有类。如果考虑一下,这确实有意义,因为Java中的包仅是名称空间。