我有一个带有常量的 Java 配置文件。
我正在使用 ant 根据构建替换常量的值。在预编译目标中:
<replace
file="Config.java"
value="default"
propertyFile="${build.env}.properties">
<replacefilter
token="@mytoken@"
property="myprop.x"/>
</replace>
效果很好。但在我运行此命令后,我的源文件被修改了。因此,如果我再次运行它,它不会替换任何内容,因为 @mytoken@ 第一次被替换。
我不想将 Config.java 放在项目之外,因为我希望它能够与 Eclipse 一起使用,并且如果文件不在预期位置,则会出现很多编译错误。
我正在考虑替换回构建后目标或其他内容,但不确定这是否安全。如果构建失败或用户中断脚本,脚本将不会运行,并且该值不会被设置回来。
有什么帮助吗?提前致谢。
最佳答案
当我必须处理这项任务时,我采用了不同的方式。 ant 脚本总是创建一个名为 Version.java
的文件,而不是编辑真正的源文件。 Version.java
永远不会 checkin 存储库,但 Version
实现的接口(interface)却可以。这样,您就不必静态依赖于生成的文件是否存在。
public String getVersionHelper() {
try {
Class versionClass = Class.forName("Version");
IVersion version = (IVersion) versionClass.newInstance()
return version.getVersion();
} catch (ClassNotFoundException ex) {
return "NO VERSION";
}
}
关键点是官方构建总是使用 ant 完成,而不是 eclipse。这允许您在 eclipse 中运行进行测试并且仍然编译成功。
关于java - Ant:多次替换源文件中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572286/