2017-05-24 34 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