Java 在最终编译时删除调试方法
我经常需要调试消息进行编程。每次发布新版本之前,我都必须删除它们,并在编译完所有内容后重新添加它们。在使用maven编译时,有没有办法忽略特定的方法调用 例如,如果代码如下所示:Java 在最终编译时删除调试方法,java,maven,logging,system.out,Java,Maven,Logging,System.out,我经常需要调试消息进行编程。每次发布新版本之前,我都必须删除它们,并在编译完所有内容后重新添加它们。在使用maven编译时,有没有办法忽略特定的方法调用 例如,如果代码如下所示: int i = 10; @Debug System.out.println(i); doSomething(i); 当我想要编译最终版本时,它将删除所有标记为@Debug的内容。在Java生产代码中,最好使用记录器而不是System.out 这样做的好处是允许您配置所需的日志级别 即调试本地测试和发布信息或错误。
int i = 10;
@Debug System.out.println(i);
doSomething(i);
当我想要编译最终版本时,它将删除所有标记为@Debug的内容。在Java生产代码中,最好使用记录器而不是System.out 这样做的好处是允许您配置所需的日志级别
即调试本地测试和发布信息或错误。不能在方法体中指定注释 以下是可能的用途:
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
因此,不能以这种方式使用注释
此外,Maven构建执行不应该改变类的行为。
应避免在生成的构件中创建变体。在没有开发环境的情况下,这可能会带来惊喜
如果要排除某些特定环境中的调试信息,请使用日志记录机制Log4j或Logback,而不是使用标准输出System.out.println,该输出机制不用于写入调试信息。
在开发过程中,使用日志记录配置启用属于特定包的类的调试级别,在非开发环境中,使用日志记录配置禁用这些类的调试级别。此外,您可以配置消息记录到控制台、文件、数据库等的位置。