Ant-Zip任务,通过读取Version.java来创建一个名为的Zip



My 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);
}

我需要使用IdentString创建一个Zip文件(仅1.7.77部分)。我不能更改Version.java或添加新的属性文件。所以我需要这个Ident值,并使用ant创建一个类似zip的applicationn_.zip。

请帮助

我宁愿做相反的事情。

将版本号作为属性放入生成文件中。在构建时,使用replace-ant任务将ant的版本插入version.java文件,然后编译应用程序。

这样,您仍然只有一个地方可以编写版本,并且随应用程序提供的version类与您现在拥有的版本类相同。

正如其他答案所建议的,我的第一个偏好是从ANT属性控制内部版本号。

按要求提供解决方案

您已经在其他答案中指出,您需要从version.java文件中解析出版本号。

我的解决方案使用groovy ant任务来设置版本属性:

<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>

我个人使用version.properties文件,其中包含以下内容:

version = 1.7.77

Ant构建文件build.xml有以下语句用于包含和使用version.properties中定义的值:

<property file="version.properties"/>

可以使用version属性来创建zip文件:

<zip destfile="build/${version}.zip" basedir="dir_to_pack" />

相关内容

  • 没有找到相关文章