我经常需要调试消息进行编程。每次发布新版本之前,我都必须将其删除,并在编译完所有内容后重新添加它们。有没有办法在使用maven编译时忽略特定的方法调用?在最终编译时删除调试方法
例如,如果代码如下:
int i = 10;
@Debug System.out.println(i);
doSomething(i);
当我想编译一个最终版本将删除所有标有@Debug。
我经常需要调试消息进行编程。每次发布新版本之前,我都必须将其删除,并在编译完所有内容后重新添加它们。有没有办法在使用maven编译时忽略特定的方法调用?在最终编译时删除调试方法
例如,如果代码如下:
int i = 10;
@Debug System.out.println(i);
doSomething(i);
当我想编译一个最终版本将删除所有标有@Debug。
的注释不能在方法
的身体被指定这里有可能使用:
/** 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
),其目的不是要写入调试信息。
在开发过程中,使用日志记录配置为属于特定软件包的类启用调试级别,并且在没有开发环境的情况下,使用禁用这些相同类的调试级别的日志记录配置。
在Java产品代码最好是使用记录器,而不是System.out的
这有让您配置所需的日志级别的好处。
I.e调试本地测试和信息(或错误)发布。
此外,您可以配置消息记录到的位置(控制台,文件,数据库等)。 – Jason