2012-01-16 3 views
0

Mon Version.java est commeAnt tâche Zip pour créer un zip nommé en lisant 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); 
} 

Je dois créer un fichier Zip à l'aide Ident String (uniquement 01/07/77 partie) .Je peux » t change Version.java ou ajoute un nouveau fichier de propriétés. J'ai donc besoin de cette valeur d'identité et de créer un zip comme applicatipn_.zip en utilisant ant.

s'il vous plaît aider

+0

Vous pouvez examiner comment Java JARs utiliser Manifest.mf ou envisager de mettre ces informations dans un fichier de propriétés au lieu d'un fichier de code. – Freiheit

Répondre

2

Je préfère faire l'inverse. Placez le numéro de version dans votre fichier de construction, comme une propriété.

Au moment de la construction, utilisez la tâche replace ant pour insérer la version de ant dans le fichier Version.java, puis compilez l'application. De cette façon, vous avez toujours un seul endroit où la version est écrite, et votre classe de version livrée avec l'application est identique à celle que vous avez maintenant.

+0

Sûrement je voudrais faire cela mais j'ai seulement une option pour lire le fichier Version.java et analyser la chaîne d'identification. S'il vous plaît fournir si vous avez une idée. – HKumar

+0

Implémentez votre propre tâche ant qui trouve le numéro de version dans le fichier en utilisant une expression rationnelle et définit une propriété ant. Utilisez la valeur de cette propriété dans la tâche jar pour définir le nom du fichier cible. –

0

Personnellement, j'utiliser le fichier version.properties avec le contenu suivant:

version = 1.7.77 

Ant buildfile build.xml a énoncé suivant aux fins d'inclusion et de l'utilisation des valeurs définies dans version.properties:

<property file="version.properties"/> 

Il est possible utiliser la propriété version pour créer le fichier zip:

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

Comme suggéré par d'autres réponses, ma première préférence serait de contrôler le nombre de construction d'une propriété ANT.

Solution comme l'a demandé

Vous avez dit dans d'autres réponses que vous avez besoin pour analyser le numéro de version du fichier Version.java.

Ma solution utilise le groovy ant task pour définir la propriété la 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>