Hi Gilles,
you asked for the right value to give using the listmodules task. Here is the
modified code of org.apache.ivy.ant.IvyListModules for using [index] in the
result of the listmodules task. My changes are marked with /*** DS - start ***/
and /*** DS - end ***/:
public void doExecute() throws BuildException {
if (organisation == null) {
throw new BuildException("no organisation provided for ivy
findmodules");
}
if (module == null) {
throw new BuildException("no module name provided for ivy
findmodules");
}
if (revision == null) {
throw new BuildException("no revision provided for ivy
findmodules");
}
if (property == null) {
throw new BuildException("no property provided for ivy
findmodules");
}
if (value == null) {
throw new BuildException("no value provided for ivy findmodules");
}
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
ModuleRevisionId[] mrids =
ivy.listModules(ModuleRevisionId.newInstance(organisation,
module, branch, revision), settings.getMatcher(matcher));
/*** DS - start ***/
int length = mrids.length;
int digits = 1;
while ((length = length / 10) > 0) digits++;
NumberFormat formatter = NumberFormat.getInstance();
formatter.setMinimumIntegerDigits(digits);
/*** DS - end ***/
for (int i = 0; i < mrids.length; i++) {
String name =
IvyPatternHelper.substitute(settings.substitute(property), mrids[i]);
String value =
IvyPatternHelper.substitute(settings.substitute(this.value), mrids[i]);
/*** DS - start ***/
name = name.replaceAll("\\[index\\]", formatter.format(i));
/*** DS - end ***/
getProject().setProperty(name, value);
}
}
The code is optimizable. It is just an example.
Now you can run listmodules that way having a well formatted result:
<ivy:listmodules
organisation="${ivy.input.organisation}"
module="${ivy.input.module}"
revision="${ivy.input.revision}"
property="ivy.list.[index]"
value=" { [organisation] | [module] | [revision] }"/>
<echoproperties regex="ivy.list.*"/>
I hope you like the proposal and will adopt it.
Cheers,
Dieter
_____________________________________________________________________
Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
http://smartsurfer.web.de/?mc=100071&distributionid=000000000066