我经常需要调试消息进行编程。每次我发布新版本之前,我都要删除它们,然后在编译完所有内容后再添加它们。有没有办法在使用maven编译时忽略特定的方法调用?
例如,如果代码如下:
int i = 10;
@Debug System.out.println(i);
doSomething(i);
当我想编译最终版本时,它会删除用@Debug标记的所有内容。
答案 0 :(得分:1)
在Java生产代码中,最好使用记录器而不是System.out
这样可以让您配置所需的日志级别。
即调试本地测试和发布信息(或错误)。
答案 1 :(得分:0)
无法在方法正文中指定注释
以下是可能的用途:
/** 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
)。
在开发期间,使用日志配置来启用属于特定软件包的类的调试级别,并且在没有开发环境中,使用日志配置来禁用这些相同类的调试级别。