2012-02-09 10 views
6

Używam ANT 1.7.0Jak dołączyć ciąg do właściwości w ant?

Chciałbym stworzyć cel, który na wezwanie, będzie dołączyć tekst na ciąg (zapisanego w nieruchomości).

na przykład:

<property name="str.text" value="" /> 

<target name="append.to.property" > 
    <property name="temp.text" value="${str.text}${new.text}" /> 
    <property name="str.text" value="${temp.text}" /> 
</target> 

Problem polega na tym, że nie mogę nadpisać wartości właściwości w jednym celu i odczytać wartości zmienione w innym celu.

Jak dodać łańcuch do właściwości w mrówce?

+1

możliwe duplikat (http [Jak Ponad napisać nieruchomości w mrówce?]: // stackoverflow. com/questions/1866729/how-to-over-write-the-property-in-ant) – skaffman

Odpowiedz

11

Nie można zmienić wartości nieruchomości w Ant.

Możesz używać zadania zmiennej Ant Contrib (patrz http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html), które zapewnia właściwości zmienne.

<property name="str.text" value="A" /> 
<property name="new.text" value="B"/> 

<target name="append.to.property" > 
    <var name="temp.text" value="${str.text}${new.text}" /> 
    <var name="str.text" value="${temp.text}" /> 
</target> 

<target name="some.target" depends="append.to.property"> 
    <echo message=${str.text}/> 
</target> 
1

właściwości normalnie mrówki są niezmienne raz ustawiony. Z Ant addon Flaka można zmienić lub nadpisać właściwości objąć istniejącymi - nawet userproperties (te właściwości ustawione za pomocą poleceń -Dkey = value), czyli stworzyć macrodef i używać go tak:

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka"> 

<property name="foo" value="bar"/> 

<macrodef name="createproperty"> 
    <attribute name="outproperty"/> 
    <attribute name="input"/> 
    <sequential> 
    <fl:let> @{outproperty} ::= '@{input}'</fl:let> 
    </sequential> 
</macrodef> 

<!-- create new property --> 
<createproperty input="${foo}bar" outproperty="fooo"/> 

    <echo>$${fooo} => ${fooo}</echo> 

    <echo>1. $${foo} => ${foo}</echo> 

<!-- overwrite existing property --> 
<createproperty input="foo${foo}" outproperty="foo"/> 

    <echo>2. $${foo} => ${foo}</echo> 

</project> 

wyjście

[echo] ${fooo} => barbar 
[echo] 1. ${foo} => bar 
[echo] 2. ${foo} => foobar 

Alternatywnie możesz użyć języka skryptowego (Groovy, Javascript, JRuby ..) i użyć ant api:
project.setProperty(String name, String value), aby nadpisać właściwość.

0

Jeśli chcesz dodać ciąg do istniejącej wartości właściwości, postępuj zgodnie z poniższymi krokami.

  1. Musimy załadować plik właściwości, który musimy zmienić w nim wartość.
  2. Uzyskaj istniejącą wartość właściwości z pliku we właściwości temp za pomocą zadania właściwości ANT.
  3. Następnie wykonaj normalny proces zmiany wartości właściwości.

1Property file 1 2string to append 3ANT Script 4Final Property value

dla odniesienia: Wordpress Link

Powiązane problemy