Ich muss einen Teilstring aus Eigenschaft Wert von Länge extrahieren, z. :
Ant-Substring nach Position
<property name="prop1" value="nameBLABLABLA" />
möchte ich den Wert bekommen
name
Ist es möglich, ohne Javascript-Code zu verwenden?
Ich muss einen Teilstring aus Eigenschaft Wert von Länge extrahieren, z. :
Ant-Substring nach Position
<property name="prop1" value="nameBLABLABLA" />
möchte ich den Wert bekommen
name
Ist es möglich, ohne Javascript-Code zu verwenden?
Nicht mit Vanille Ameise, müssten Sie einige Ant-Addon wie
Antcontrib (neueste Version 2006!) Oder Ant Flaka hinzufügen - bedeutet, dass Sie zusätzliche Gläser/Bibliotheken benötigen.
mit der jdk gebautet Javascript-Engine ist es so einfach wie:
<project>
<!-- create a macrodef for reuse -->
<macrodef name="getsubstring">
<attribute name="src"/>
<attribute name="from"/>
<attribute name="to"/>
<attribute name="result"/>
<sequential>
<script language="javascript">
project.setProperty(
"@{result}", "@{src}".substring(@{from},@{to})
);
</script>
</sequential>
</macrodef>
<property name="foo" value="nameBLABLABLA"/>
<getsubstring src="${foo}" from="0" to="4" result="foobar"/>
<echo> $${foobar} => ${foobar}</echo>
</project>
keine zusätzlichen Bibliotheken erforderlich.
Erstellt ein Makrodef, das für Eigenschaften bzw. für Strings im Allgemeinen funktioniert.
Die JavaScript-Engine versteht Javascript und Java und Sie erhalten vollen Zugriff auf Ant API.
Ich würde JavaScript wie in Rebses Antwort verwenden, aber es gibt eine Möglichkeit, dies ohne <loadresource>
und <tokenfilter>
zu tun. Dies verwendet Start/Länge anstelle von/für den Teilstring:
<macrodef name="getsubstring">
<attribute name="src"/>
<attribute name="start"/>
<attribute name="length"/>
<attribute name="result"/>
<sequential>
<loadresource property="@{result}">
<string value="@{src}}" />
<filterchain>
<tokenfilter>
<replaceregex pattern="^.{@{start}}(.{@{length}}).*" replace="\1" />
</tokenfilter>
</filterchain>
</loadresource>
</sequential>
</macrodef>
<property name="prop1" value="nameBLABLABLA" />
<getsubstring src="${prop1}" start="0" length="4" result="p"/>
<echo message="${p}" />
Großartig! Funktioniert bei mir. –