在最终编译时删除调试方法

Remove debug methods on final compile

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

例如,如果代码如下所示:

int i = 10;

@Debug System.out.println(i);

doSomething(i);

当我想编译最终版本时,它会删除带有@Debug 标记的所有内容。

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

这样做的好处是允许您配置所需的日志级别。

即用于本地测试的调试和用于发布的信息(或错误)。

不能在方法体中指定注解

以下是可能的用途:

    /** 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)。
在开发期间,使用启用属于特定包的 类 调试级别的日志记录配置,在非开发环境中,使用禁用这些相同 类.[= 调试级别的日志记录配置12=]