用ant的java版本控制系统

时间:2011-04-06 11:40:50

标签: java ant version

我有一个ANT-Skript来构建我的版本。它必须使用版本号,因此它在ANT-Script中输入。

同时存在一个包含相同版本号的Java文件,软件内部需要此编号。

有没有办法只有一个地方存储版本号?

4 个答案:

答案 0 :(得分:2)

您可以使用filterreplace任务将其写入应用程序类路径中可用的资源文件(例如专用属性文件)。

答案 1 :(得分:1)

一个简单的解决方案:编写一个小的ant任务,从版本类中读取版本号(我猜它有一个静态的getter方法)并将版本号存储在ant属性中。您只需要确保,版本文件位于ant的类路径中,以便任务可以访问它:

public GetVersion extends Task {
  public void execute() {
    getProject().setProperty("VERSIONNUMBER", Version.getNumber());
  }
}

在ant脚本中,定义任务(<taskdef>),执行它并在属性${VERSIONNUMBER}中找到版本号

答案 2 :(得分:1)

也许ANT BuildNumber任务正是您要找的?它使用版本号维护单个文件。从java中读取它没问题...

答案 3 :(得分:1)

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>任务调用此方法,将输出保存在属性中。