Retrieve value from text file and replace a string constant in another file with that value using ant script

后端 未结 2 938
暖寄归人
暖寄归人 2020-12-22 05:40

I have a file called versionInfo.txt. This file among other things has the following text: \"Implementation-Version: 7.5.0.1\".

I need to retrieve the version value

相关标签:
2条回答
  • 2020-12-22 06:17

    Create a properties file like this and name it build.properties

    version.label=7.5.0.1
    

    Then in your build.xml file

    <project basedir=".">
    
        <target name="replace-labels">
    
            <property file="${basedir}/build.properties"/>
    
            <replace
                file="${basedir}/myClass.java"
                token="@version-info@"
                value="${version.label}" />
    
         </target>
    
    </project>
    

    So your file structure should look like

    myproject
        build.properties
        build.xml
        myClass.java
    

    Then you can execute your ANT build by changing to the "myproject" directory and executing

    ant replace-labels
    

    The replace tag will look for the string "@version-info@" in your myClass.java file and replace it with the value "7.5.0.1"

    0 讨论(0)
  • 2020-12-22 06:33

    For the second part of your question, retrieve the version info.. : If you need to read the Implementation-Version from the Manifest of a jar you may use a macrodef, f.e. :

    <!-- Grep a keyvalue from Manifest -->
    <macrodef name="mfgrep">
      <attribute name="jar"/>
      <attribute name="key"/>
      <attribute name="catch"/>
        <sequential>
          <loadproperties>
            <zipentry zipfile="@{jar}" name="META-INF/MANIFEST.MF"/>
          </loadproperties>
            <property name="@{catch}" value="${@{key}}"/>
        </sequential>
    </macrodef>
    
     <mfgrep
       jar="/home/rosebud/temp/ant.jar"
       key="Implementation-Version"
       catch="foobar"
     />
    
    <echo>$${foobar} => ${foobar}</echo>
    
    0 讨论(0)
提交回复
热议问题