2017-05-24 39 views
0

我经常需要调试消息进行编程。每次发布新版本之前,我都必须将其删除,并在编译完所有内容后重新添加它们。有没有办法在使用maven编译时忽略特定的方法调用?在最终编译时删除调试方法

例如,如果代码如下:

int i = 10; 

@Debug System.out.println(i); 

doSomething(i); 

当我想编译一个最终版本将删除所有标有@Debug。

回答

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),其目的不是要写入调试信息。
在开发过程中,使用日志记录配置为属于特定软件包的类启用调试级别,并且在没有开发环境的情况下,使用禁用这些相同类的调试级别的日志记录配置。

1

在Java产品代码最好是使用记录器,而不是System.out的

这有让您配置所需的日志级别的好处。

I.e调试本地测试和信息(或错误)发布。

+0

此外,您可以配置消息记录到的位置(控制台,文件,数据库等)。 – Jason