【发布时间】:2009-11-03 08:05:51
【问题描述】:
我需要自动将特定格式的编译日期放入一个 Java 源文件中,就像 C 编译器 DATE 定义的那样,如何?
【问题讨论】:
-
版本控制。需要从jar文件中知道是什么时候构建的。
-
在这种情况下,请考虑将其放入 jar 清单中
标签: java compiler-construction
我需要自动将特定格式的编译日期放入一个 Java 源文件中,就像 C 编译器 DATE 定义的那样,如何?
【问题讨论】:
标签: java compiler-construction
标准 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 属性 TODAY 中获取各种格式的日期,请查看 Tstamp 任务。
【讨论】:
您可以使用 aspectj 编译时编织来初始化一个变量(您显然希望通过将方面中的日期转换为字符串然后让您的代码解析该字符串来进行赋值)。
当然,也没有什么能阻止您在 java 文件上实际使用 c 预处理器。
【讨论】:
您是否考虑过注释处理器?您可以在使用 javac 编译之前运行它们,然后如果有某些注释,则手动将日期添加到文件中。
【讨论】: