【发布时间】:2015-05-25 13:52:38
【问题描述】:
我在 src/main/java/com/company/project/Config.java 中有以下类:
public class Config {
public static final boolean DEBUG = true;
...
}
以便在其他类中我可以执行以下操作,知道如果 if() 语句的计算结果为 false,java 编译器将删除它:
import static com.company.project.Config.DEBUG
if (DEBUG) {
client.sendMessage("something");
log.debug("something");
}
在 Gradle 中,在不修改原始文件的情况下,在编译时过滤和更改 Config.java 中的 DEBUG 值的最佳方法是什么?
目前我在想:
- 创建一个过滤 DEBUG 并将 Config.java 复制到临时位置的任务 updateDebug(type:Copy)
- 从源中排除原始 Config.java 文件并包含临时文件
- make compileJava.dependsOn updateDebug
以上可能吗? 有没有更好的办法?
【问题讨论】:
-
不保证编译器会去掉永远为假的 if 分支。
-
@Marco 感谢您的链接,但是为了让编译器能够删除 if() 语句,DEBUG 变量必须在编译时初始化,而不是在运行时初始化
-
如果您使用任何类型的标准记录器,您为什么关心记录调试消息?如果您不希望它们出现,请将应用程序的日志级别配置为大于 DEBUG(可能是“信息”)。
标签: java regex gradle filtering