我經常需要調試消息進行編程。每次發佈新版本之前,我都必須將其刪除,並在編譯完所有內容後重新添加它們。有沒有辦法在使用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