Задача Ant Zip для создания zip с именем, читая Version.java - PullRequest
0 голосов
/ 16 января 2012

Моя версия.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);
}

Мне нужно создать Zip-файл, используя Ident String (только часть 1.7.77). Я не могу изменить Version.java или добавить заново файл свойств. Так что мне нужно это значение Ident и создать почтовый индекс, как applicationatipn_.zip, используя ant.

пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Я бы предпочел сделать наоборот.

Поместите номер версии в свой файл сборки как свойство. Во время сборки используйте задачу замены ant, чтобы вставить версию из ant в файл Version.java, а затем скомпилировать приложение.

Таким образом, у вас все еще есть только одно место, где написана версия, и ваш класс Version, поставляемый с приложением, идентичен тому, который у вас есть сейчас.

1 голос
/ 16 января 2012

Как подсказывают другие ответы, мое первое предпочтение будет заключаться в управлении номером сборки из свойства ANT.

Решение по запросу

Вы указали в других ответах, что вам нужно проанализировать номер версии из файла Version.java.

Мое решение использует задачу groovy ant для установки свойства version :

<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>
0 голосов
/ 16 января 2012

Лично я использую version.properties файл со следующим содержимым:

version = 1.7.77

Файл сборки Ant build.xml содержит следующую инструкцию для включения и использования значений, определенных в version.properties:

<property file="version.properties"/>

Для создания zip-файла можно использовать свойство version:

<zip destfile="build/${version}.zip" basedir="dir_to_pack" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...