Existe-t-il un moyen d'extraire une sous-chaîne d'une propriété Ant et de placer cette sous-chaîne dans sa propre propriété?Comment extraire une sous-chaîne dans Ant
Répondre
J'utilise scriptdef pour créer une balise javascript substring, pour exemple:
<project>
<scriptdef name="substring" language="javascript">
<attribute name="text" />
<attribute name="start" />
<attribute name="end" />
<attribute name="property" />
<![CDATA[
var text = attributes.get("text");
var start = attributes.get("start");
var end = attributes.get("end") || text.length();
project.setProperty(attributes.get("property"), text.substring(start, end));
]]>
</scriptdef>
........
<target ...>
<substring text="asdfasdfasdf" start="2" end="10" property="subtext" />
<echo message="subtext = ${subtext}" />
</target>
</project>
Je voudrais aller avec la force brute et écrire une tâche Ant personnalisée:
public class SubstringTask extends Task {
public void execute() throws BuildException {
String input = getProject().getProperty("oldproperty");
String output = process(input);
getProject().setProperty("newproperty", output);
}
}
Qu'est-ce qui reste à mettre en œuvre le String process(String)
et ajouter quelques setters (par exemple pour les valeurs oldproperty
et newproperty
)
Vous pouvez essayer d'utiliser PropertyRegex from Ant-conrtib.
<propertyregex property="destinationProperty"
input="${sourceProperty}"
regexp="regexToMatchSubstring"
select="\1"
casesensitive="false" />
Note supplémentaire: Dans le cas où cela est fait dynamiquement dans une boucle, utilisez 'override =" true "' pour remplacer toute valeur précédente. – robinst
i utiliserais tâche de script à cette fin, je préfère rubis, par exemple coupé les 3 premiers chars =
<project>
<property name="mystring" value="foobarfoobaz"/>
<target name="main">
<script language="ruby">
$project.setProperty 'mystring', $mystring[3..-1]
</script>
<echo>$${mystring} == ${mystring}</echo>
</target>
</project>
sortie =
main:
[echo] ${mystring} == barfoobaz
utilisant la api fourmi avec méthode project.setProperty() sur une propriété existante va l'écraser, de cette façon vous pouvez travailler autour de la norme ant comportement, signifie propert s une fois ensemble sont immuables
Salut, j'ai cette erreur: Impossible de créer le moteur de script javax pour ruby –
Jarod, vous avez besoin de bsf.jar (http://jakarta.apache.org/bsf) et jruby.jar (http: //www.jruby .org), voir aussi http://ant.apache.org/manual/install.html#librarydependencies, notez que le lien vers jruby est faux sur cette page. – Rebse
oh merci Rubse –
Depuis que je préfère utiliser la vanille Ant, j'utilise un fichier temporaire. Fonctionne partout et vous pouvez tirer parti de replaceregex pour se débarrasser de la partie de la chaîne que vous voulez . Exemple de fusion de messages Git:
<exec executable="git" output="${git.describe.file}" errorproperty="git.error" failonerror="true">
<arg value="describe"/>
<arg value="--tags" />
<arg value="--abbrev=0" />
</exec>
<loadfile srcfile="${git.describe.file}" property="git.workspace.specification.version">
<filterchain>
<headfilter lines="1" skip="0"/>
<tokenfilter>
<replaceregex pattern="\.[0-9]+$" replace="" flags="gi"/>
</tokenfilter>
<striplinebreaks/>
</filterchain>
</loadfile>
Si vous traitez une propriété pour commencer, vous pouvez éviter le fichier en faisant quelque chose comme
Merci! J'ai utilisé '
- 1. Comment emballer une construction Ant avec Maven?
- 2. Comment stocker les propriétés dans une liste dans Ant?
- 3. comment puis-je extraire le 1er élément d'une propriété CSV ant
- 4. Comment trouver une ressource JNDI dans la tâche Ant hibernatetool
- 5. Exécuter inconditionnellement une tâche dans Ant?
- 6. Comment utiliser Ant?
- 7. Comment faire un "document ici" dans Ant?
- 8. Ant remplacer dans maven2?
- 9. Copier une liste d'arguments Ant dans une propriété
- 10. Où puis-je obtenir la tâche Ant Ant Ant?
- 11. Dépendances par fichier dans ant
- 12. comment extraire objet .net
- 13. unix2dos (ou dos2unix) dans ant
- 14. tableaux PHP: extraire une dimension
- 15. Javadoc seulement une classe dans un paquet en utilisant Ant
- 16. Comment remplacer Ant avec Maven?
- 17. Comment créer une TarTask Ant pour cette commande tar?
- 18. Comment vider une base de données MySQL avec ant?
- 19. Comment Ant peut-il lire une valeur d'un fichier dans une valeur de propriété?
- 20. Extraire une valeur d'un nom * de param?
- 21. Comment extraire une image d'un fichier pdf en utilisant C#
- 22. Comment extraire une seule colonne de données d'un DataSet rempli?
- 23. Comment extraire une chaîne pure d'une chaîne constante
- 24. php pour extraire une chaîne de guillemet
- 25. Comment extraire une valeur numérique d'une chaîne dans une requête MySQL?
- 26. Comment extraire une sous-chaîne d'un .NET RegEx?
- 27. Comment extraire une chaîne d'une chaîne plus grande?
- 28. Comment extraire une partie de cette image en Java?
- 29. Comment extraire d'une liste d'objets une liste d'attributs spécifiques?
- 30. Comment extraire un 0 avant '.'
Pouvez-vous être plus précis sur ce que vous essayez de faire? Pourquoi ne serait-il pas plus logique de définir une propriété pour conserver la valeur dont vous dépendez et l'utiliser à plusieurs endroits? Si vos propriétés Ant changent assez souvent que vous avez besoin de réagir par programme, vous pouvez faire autre chose de mal. – PanCrit