Ivy
  1. Ivy
  2. IVY-1158

Make ivy.xml <conf description> available

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.2.0-RC1
    • Component/s: Ant
    • Labels:
      None

      Description

      You can (an IMHO should) write an explanation of the configuration in the ivy file
      <ivy-module version="2.0">
      <configurations>
      <conf name="runtime" description="Runtime Libraries"/>
      </configurations>
      </ivy-module>

      The Ant task <ivy:info/> makes the names names available, but not the descriptions.
      So the first RFE is making them available (accoding to 'infotest.configurations') as 'infotest.configuration.descriptions'.

      Another RFE is enhanding <ivy:retrieve/> to create a describing file in the destination directory which contains this information.
      E.e. with Ivy pattern lib/[conf]/[artifact].[ext] you would create with <ivy:retrieve descriptionfile="readme.txt"/> a file lib/runtime/readme.txt with content "Runtime Libraries".
      (!! Recreate old files, but beware that multiple confs could result in the same dir if the ivy pattern doesnt contain a [conf]. )

        Activity

        Hide
        Jan Matèrne added a comment -

        Workaround with AntContrib and a little bit scripting

         
        <xmlproperty file="ivy.xml" prefix=".ivyconf" delimiter="@"/>
        <script language="javascript"> <![CDATA[
            descriptions = project.getProperty(".ivyconf.ivy-module.configurations.conf(description)").split("@");
            confs        = project.getProperty(".ivyconf.ivy-module.configurations.conf(name)").split("@");
            for(i=0; i<confs.length; i++) {
                project.setNewProperty(".ivyconf.list." + (i+1) + ".conf", confs[i]);
                project.setNewProperty(".ivyconf.list." + (i+1) + ".desc", descriptions[i]);
            }
            project.setNewProperty(".ivyconf.list.length", confs.length);
        ]]></script>
        <ac:for begin="1" end="${.ivyconf.list.length}" param="i">
            <sequential>
                <echo file="lib/${.ivyconf.list.@{i}.conf}/.readme.txt" message="${.ivyconf.list.@{i}.desc}"/>
            </sequential>
        </ac:for>
        
        Show
        Jan Matèrne added a comment - Workaround with AntContrib and a little bit scripting <xmlproperty file= "ivy.xml" prefix= ".ivyconf" delimiter= "@" /> <script language= "javascript" > <![CDATA[ descriptions = project.getProperty( ".ivyconf.ivy-module.configurations.conf(description)" ).split( "@" ); confs = project.getProperty( ".ivyconf.ivy-module.configurations.conf(name)" ).split( "@" ); for (i=0; i<confs.length; i++) { project.setNewProperty( ".ivyconf.list." + (i+1) + ".conf" , confs[i]); project.setNewProperty( ".ivyconf.list." + (i+1) + ".desc" , descriptions[i]); } project.setNewProperty( ".ivyconf.list.length" , confs.length); ]]></script> <ac: for begin= "1" end= "${.ivyconf.list.length}" param= "i" > <sequential> <echo file= "lib/${.ivyconf.list.@{i}.conf}/.readme.txt" message= "${.ivyconf.list.@{i}.desc}" /> </sequential> </ac: for >
        Hide
        Maarten Coene added a comment -

        I've implemented your first RFE in trunk.
        After running the <ivy:info /> task, the descriptions are availabe as "ivy.configuration.[config name].desc".

        Regarding your second RFE, I think this is too specific to add to Ivy. And you can easily do it with ant-contrib as you illustrated in your example build.xml, something like this:

        <ivy:info file="ivy.xml" />
        <ac:for list="${ivy.configurations}" param="conf">
            <sequential>
                <echo file="lib/@{conf}/.readme.txt" message="${ivy.configuration.@{conf}.desc}"/>
            </sequential>
        </ac:for>
        

        But please reopen if you don't agree...

        Maarten

        Show
        Maarten Coene added a comment - I've implemented your first RFE in trunk. After running the <ivy:info /> task, the descriptions are availabe as "ivy.configuration. [config name] .desc". Regarding your second RFE, I think this is too specific to add to Ivy. And you can easily do it with ant-contrib as you illustrated in your example build.xml, something like this: <ivy:info file="ivy.xml" /> <ac:for list="${ivy.configurations}" param="conf"> <sequential> <echo file="lib/@{conf}/.readme.txt" message="${ivy.configuration.@{conf}.desc}"/> </sequential> </ac:for> But please reopen if you don't agree... Maarten

          People

          • Assignee:
            Maarten Coene
            Reporter:
            Jan Matèrne
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development