我的Version.java就像
public class Version {
public Version() {
VERSION_PROGRAMNAME = "application";
VERSION_MAJOR = "1.7";
}
public static final String IDENT = "@(#) application: 1.7.77 ";
public static void main(String[] args) {
System.out.println(LINE_SEP);
System.out.println("************* Version Information *************");
System.out.println(new Version());
System.out.println("***********************************************");
System.out.println(LINE_SEP);
}
我需要使用Ident String创建一个Zip文件(仅1.7.77部分)。我无法更改Version.java或添加新的属性文件。所以我需要这个Ident值并使用ant创建一个像applicatipn_.zip这样的zip。
请帮助
答案 0 :(得分:2)
我宁愿反过来。
将版本号作为属性放在构建文件中。在构建时,使用replace ant任务将ant中的版本插入到Version.java文件中,然后编译应用程序。
这样,您仍然只有一个地方可以编写版本,并且随应用程序提供的版本类与您现在拥有的版本相同。
答案 1 :(得分:1)
正如其他答案所示,我的首选是从ANT属性控制内部版本号。
您已在其他答案中声明需要解析Version.java文件中的版本号。
我的解决方案使用groovy ant task设置版本属性:
<target name="parse-version">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<groovy>
def file = new File("src/main/java/Version.java")
file.eachLine { line ->
def matcher = (line =~ /.*String IDENT = "@\(#\) application: ([\.\d]+) ";\s*/)
if (matcher.matches()) {
properties.version = matcher[0][1]
}
}
</groovy>
<fail message="Did not find version" unless="version"/>
</target>
<target name="build" depends="parse-version">
<zip destfile="build/application_${version}.zip" basedir="dir_to_pack" />
</target>
答案 2 :(得分:0)
我个人使用version.properties
文件,内容如下:
version = 1.7.77
Ant buildfile build.xml
具有以下语句,用于包含和使用version.properties
中定义的值:
<property file="version.properties"/>
可以使用version
属性来创建zip文件:
<zip destfile="build/${version}.zip" basedir="dir_to_pack" />