我需要自动将特定格式的编译日期转换为一个Java源文件,比如C编译器 DATE 定义,如何?
答案 0 :(得分:9)
标准的Java编译器无法做到这一点(我不认为C编译器会这样做 - 我猜这是预处理器提供DATE,FILE等)
你必须写一个日期为字符串的源文件 - 用过滤器查看ant的复制任务
<copy file="pre-src/Version.java" toFile="src/Version.java">
<filterset>
<filter token="DATE" value="${TODAY}"/>
</filterset>
</copy>
然后在你的来源
public class Version {
public static final String date = "@DATE@";
}
要以各种格式将日期输入到ant属性中,请查看Tstamp任务。
答案 1 :(得分:1)
您可以使用aspectj编译时编织来初始化变量(您显然希望通过将方面中的日期转换为字符串然后让代码解析该字符串来完成赋值)。
当然,没有什么可以阻止你在java文件上实际使用c预处理器。
答案 2 :(得分:1)
您是否考虑过注释处理器?您可以在使用javac编译之前运行它们,然后在存在特定注释时手动将日期添加到文件中。