J'ai défini les éléments suivants dans un fichier appelé build-dependencies.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="build-dependencies">
...
<path id="common-jars">
<fileset file="artifacts/project-1/jar/some*.jar" />
<fileset file="artifacts/project-2/jar/someother*.jar" />
</path>
...
</project>
Je l'inclus en haut de mon construire.xml fichier. J'ai maintenant besoin de faire du dossier des artefacts un paramètre afin qu'il puisse être modifié pendant l'exécution de différentes cibles. En ayant ce...
<?xml version="1.0" encoding="UTF-8"?>
<project name="build-dependencies">
...
<path id="common-jars">
<fileset file="${artifacts}/project-1/jar/some*.jar" />
<fileset file="${artifacts}/project-2/jar/someother*.jar" />
</path>
...
</project>
...et la définition d'une propriété "artefacts" (et sa modification) dans la cible ne fonctionne pas car il semble que la substitution de propriété se produise lorsque le chemin est défini en build-dependencies.xml
Comment puis-je résoudre ce problème ? J'ai pensé à une macro paramétrée et à l'appeler avant que le chemin ne soit réellement utilisé, mais cela ne semble pas élégant. Quelque chose comme ceci :
<macrodef name="create-common-jars">
<attribute name="artifacts"/>
<sequential>
<path id="common-jars">
<fileset file="@{artifacts}/project-1/jar/some*.jar" />
<fileset file="@{artifacts}/project-2/jar/someother*.jar" />
</path>
</sequential>
</macrodef>
EDIT : Ivy et les paramètres de ligne de commande ne sont pas une option.