我想在我的程序中进行条件编译。我知道,如果您声明一个公共的静态最终布尔值,则编译器将忽略未遍历的分支。可以在构建程序之前让ant目标更改变量吗?

例如,如果我有:

final public static boolean windows = false;

我想要两个蚂蚁目标:Windows和Mac。
我想要命令
ant windows
将布尔值更改为true,而
ant mac
保留变量不变。

谢谢。

最佳答案

您可以让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/

10-11 22:15
查看更多