我有一个ant - script来构建我的版本。它必须使用版本号,所以它是在ANT-Script中输入的。
同时有一个包含相同版本号的Java文件,这个版本号是软件内部需要的。
有没有办法只有一个地方存储版本号?
您可以使用过滤器或替换任务将其写入资源文件(例如专用属性文件),该文件将在应用程序的类路径中可用
McDowell给出了使用Ant将版本号插入到Java文件和/或类路径资源中的"标准"答案。但是,我从来都不喜欢这种方法。
另一种选择,利用Java的"一旦编译就准备好运行"的行为,是给你的Version
类一个main()
:
public class Version
{
public final static int MAJOR = 1;
public final static int MINOR = 0;
public final static int PATCH = 0;
public final static String VERSION_STRING = MAJOR + "." + MINOR + "." + PATCH;
public static void main(String[] argv)
throws Exception
{
System.out.println(VERSION_STRING);
}
}
然后您可以用Ant的<java>
任务调用它,并将输出保存在属性中。
一个简单的解决方案:编写一个小的ant任务,从version类(我猜它有一个静态getter方法)读取版本号,并将版本号存储在ant属性中。您只需要确保版本文件位于ant的类路径上,以便任务可以访问它:
public GetVersion extends Task {
public void execute() {
getProject().setProperty("VERSIONNUMBER", Version.getNumber());
}
}
在ant脚本中,定义任务(<taskdef>
),执行它并在属性${VERSIONNUMBER}
也许ANT BuildNumber任务是您正在寻找的?它维护带有版本号的单个文件。从java中读取没有问题…