java - 可以用ant修改源码吗?

标签 java ant preprocessor conditional-compilation

我想在我的程序中进行条件编译。我知道,如果您声明一个 public static final boolean ,编译器将忽略未遍历的分支。是否可以让 ant 目标在构建程序之前更改变量?

例如,如果我有:

最终公共(public)静态 boolean 窗口= false;

我想要两个 ant 目标:Windows 和 Mac。 我想要命令 Ant 窗 将 boolean 值更改为 true,同时 Ant 麦克 保持变量不变。

谢谢。

最佳答案

您可以让 Ant 修改属性文件,然后您可以轻松地在应用程序中读取该文件:
new Properties(new FileInputStream("filename" / new File(filename)) ),

并使用以下方式读取属性:
Boolean isWindows = new Boolean(properties.getProperty("windows"))

或:
String os = properties.getProperty("os")

您可以使用 Ant PropertyFile执行此操作的任务:http://ant.apache.org/manual/Tasks/propertyfile.html .

编辑:如果您绝对必须使用 Ant 编辑源代码文件,这里有使用另一个任务的替代方法:

<replaceregexp file="blah.java" match="public static final boolean WINDOWS = \"(.*)\"" replace="public static final boolean WINDOWS = \"" + ${properties.windows} + "\"" />
-- 根据需要将代码替换为您自己的代码。请参阅http://ant.apache.org/manual/Tasks/replaceregexp.html了解详情。

关于java - 可以用ant修改源码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338841/

相关文章:

java - 为什么执行器服务比java 8中的顺序操作花费更多时间?

java - getText() 方法从我的 JTextField 获取什么?

linux - Jenkins - Selenium WebDriver Firefox 错误 - 无法连接

java - MXMLC Ant 任务导致 java.lang.OutOFMemoryError

java - 构建失败: Cannot find an environment variable

ios - 用于测试是否正在构建应用程序扩展的预处理器宏是什么?

java - 我们可以在不安装客户端和服务器的情况下从代码连接到SQL Server 2005数据库吗

java - 使用枚举作为参数的 Hibernate 查询

c - if else C语言的简写

linux - 如何在 QML 中编写条件导入语句?