2011-04-06 133 views
1

我有一个ANT-Skript构建我的版本。它必须使用版本号,所以它在ANT脚本中输入。java版本控制系统与蚂蚁

同时有一个Java文件包含相同的版本号,这个号码是软件内部需要的。

有什么办法只有一个地方来存储版本号?

回答

1

McDowell给出了使用Ant将版本号插入Java文件和/或类路径资源的“标准”答案。不过,我从来不喜欢这种方法。

的替代,一个利用Java的行为“因为它的编译它已经准备好,就立即执行”,就是给你Versionmain()

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

+0

其工作方式:-) java任务的outputproperty属性做的伎俩 – 2011-04-06 14:32:17

1

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

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

Ant脚本,定义任务(<taskdef>),执行它,并找到VERSIONNUMBER

2

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

+0

作为构建工程师,我更愿意让构建系统确定版本和内部版本号。 – JasonMArcher 2011-04-07 23:18:05

1

也许ANT BuildNumber任务是你在找什么?它使用版本号维护单个文件。没问题从java读取它...