Comment passer plusieurs paramètres à une cible dans Ant?
J'ai ce mannequin cible:
<mkdir dir="${project.stage}/release
<war destfile="${project.stage}/release/sigma.war">
...
...
</war>
Ce que je veux faire est de fournir deux paramètres dire "abc" & "xyz" qui remplacera le mot libération avec les valeurs de l'abc et xyz paramètres respectivement.
Pour le premier paramètre dire que abc="test", le code ci-dessus va créer un test répertoire et mettez-la guerre à l'intérieur.De même, pour les xyz="production" cela va créer un dossier production et de mettre le fichier war de l'intérieur.
J'ai essayé en utilisant
<antcall target="create.war">
<param name="test" value="${test.param.name}"/>
<param name="production" value="${prod.param.name}"/>
</antcall>
dans la cible, qui repose sur le mannequin de la cible indiquée ci-dessus.
Est-ce la bonne façon de le faire.Je suppose qu'il doit y avoir un moyen de passer plusieurs paramètres, et ensuite une boucle à travers les paramètres un à un.
Bien deux paramètres ne sont pas nécessaires, tout ce que je besoin pour atteindre l'objectif indiqué ci-dessus.Si vous pouvez fournir une meilleure solution, vous êtes la plupart de bienvenue 🙂
OriginalL'auteur EMM | 2011-09-26
Vous devez vous connecter pour publier un commentaire.
malheureusement ant ne prend pas en charge l'itération comme pour la ou les boucles foreach, sauf si l'on se réfère à des fichiers. Cependant, il est à la fourmi contrib tâches qui résoudre la plupart, si pas tous vos itération problèmes.
Vous devez installer le .pot en suivant les instructions ici : http://ant-contrib.sourceforge.net/#install
Cela devrait prendre environ 10 secondes. Après, vous pouvez simplement utiliser le foreach tâche d'itérer à travers vous une liste personnalisée. Comme un exemple, vous pouvez suivre ci-dessous build.xml fichier :
De sortie :
J'espère que cela aide 🙂
Deuxième solution sans l'aide de ant contrib. Vous pourriez encapsuler toute votre logique dans un macrodef et simplement l'appeler deux fois. En tout cas, vous avez besoin d'écrire les deux paramètres, à un certain moment dans votre fichier de build. Je ne pense pas qu'il existe un moyen pour itérer sur les propriétés sans aide externe .des pots ou des BSF langues.
OriginalL'auteur FailedDev
J'avoue que je ne comprends pas la question en détail. Est
${project.stage}
le même que lexyz
etabc
paramètres? Et pourquoi il y a deux paramètresxyz
etabc
mentionné, lorsque seul le mot "libération" devrait être remplacé?Ce que je savoir est, que
macrodef
(docu) est quelque chose de très polyvalent et qu'il pourrait être de bon usage ici:La sortie sera:
Peut-être nous pouvons commencer d'ici et d'adapter cet exemple que nécessaire.
Oui et non - Oui: j'avoue que je n'ai pas remarqué la mise à jour de votre réponse. La N de la Partie: Il n'y a pas de
antcall
impliqués. Je ne peux pas dire si c'est quelque chose que l'interlocuteur veut ou ne veut pas. Nous allons le voir. Si pas, je vais supprimer ma réponse.Eh bien, je ne peux pas vous blâmer. La question est plutôt vague. Vous n'avez pas à supprimer quoi que ce soit. Nous sommes tous d'essayer de les aider.
bien ${projet.stage} n'est pas la même que abc ou xyz. Il en est d'autres direcory dire C:/mydrive/antbuilds je suis de l'utiliser pour éviter de coder en dur dans par build fichier. Maintenant, après cela, je veux créer deux répertoires différents à l'intérieur de antbuilds dossier et le nom des dossiers seront les valeurs des paramètres que je vais passer, abc et xyz dans ce cas.abc et xyz valeurs de remplacer la libération et de ce que j'obtiens est:C:/mydrive/antbuilds/abc'svalue & C:/mydrive/antbuilds/xyz'valeur.
OriginalL'auteur A.H.