Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在最终编译时删除调试方法_Java_Maven_Logging_System.out - Fatal编程技术网

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

Java 在最终编译时删除调试方法,java,maven,logging,system.out,Java,Maven,Logging,System.out,我经常需要调试消息进行编程。每次发布新版本之前,我都必须删除它们,并在编译完所有内容后重新添加它们。在使用maven编译时,有没有办法忽略特定的方法调用 例如,如果代码如下所示: int i = 10; @Debug System.out.println(i); doSomething(i); 当我想要编译最终版本时,它将删除所有标记为@Debug的内容。在Java生产代码中,最好使用记录器而不是System.out 这样做的好处是允许您配置所需的日志级别 即调试本地测试和发布信息或错误。

我经常需要调试消息进行编程。每次发布新版本之前,我都必须删除它们,并在编译完所有内容后重新添加它们。在使用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,该输出机制不用于写入调试信息。
在开发过程中,使用日志记录配置启用属于特定包的类的调试级别,在非开发环境中,使用日志记录配置禁用这些类的调试级别。

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