2011-03-18 52 views
4

我試圖在循環中使用Ant任務<loadfile>來解析文件的內容。我有類似的東西Ant loadfile覆蓋屬性

<loadfile srcFile="@{some.input}" property="my.property"> 

由於Ant屬性是不可變的,所以這對我不起作用。我需要'my.property'來更新每一次迭代。有沒有辦法做到這一點?我知道Ant-contrib有一個<var>任務,但我不確定如何使用<loadfile>

任何建議?

謝謝。

+0

不太您的問題,而是:令人驚訝的在我的ENV(螞蟻1.9.4)**'<研究loadFile SRC = 「......」encoding =「...」/>'確實重寫了一個在其內部定義了兩次的屬性** :-(不幸的是,這導致了一些針對測試系統的prod更改!顯然在同一個文件中重寫作爲默認設置: -/ – 2018-02-15 08:43:02

回答

0

Ant plugin Flaka提供一個讓任務,允許覆蓋現有的屬性或變量像=

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

<property name="my.property" value="value"/> 
<fl:let> my.property ::= 'anothervalue'</fl:let> 

</project> 

所以沒必要取消設置首先,然後設置。順便說一句。 Flaka還有一個未設置的任務;-)

1

Ant contrib也有一個var任務,取消設置。

Lucks:按照約定接受其中一個答案,以便人們知道問題已解決。我建議你接受吉爾伯特,因爲他首先發布正確的答案。

+0

在過去,我使用Antcontrib很多,但因爲它的開發似乎已經死了 - 最後一次在2006年發佈 - 我搜索了一個類似的工具,發現了Ant Flaka(http:// code .google.com/p/flaka /) 。 Flaka有一些非常創新的功能,f.e.類似於JSF/JSP的表達式語言 – Rebse 2011-03-21 19:00:38

+0

正如我的問題中所述,我不確定如何使用任務與 lucks 2011-03-22 16:30:20

+0

您可以使用var/unset在再次調用loadfile之前取消設置屬性。 – 2011-03-23 02:58:36

6
<loadfile property="foo" srcfile="bar.txt"/> 

... do some actions, perhaps in a <for> loop ... 

<var name="foo" unset="true"/> 

然後,您可以在<loadfile>

+3

澄清var任務是在AntContrib的東西,它與標準屬性一起工作。 – 2011-12-26 23:23:03

+0

這工作得很好!我在''之前放置了''元素,每次都有效。基本上使屬性可變。需要的時候很棒!在''操作中使用它。 – SliverNinja 2014-10-22 18:38:11

1

其中之一是能夠覆蓋的屬性值是script內置的任務再次使用foo

下面是一個腳本和證明屬性值更改的輸出。

<project name="test"> 
    <property name="bshJar" value="C:\lang\java\bsh-1.3.0.jar:C:\lang\java\bsf.jar:C:\lang\java\commons-logging-1.1.1.jar" /> 
    <property name="a" value="first" /> 
    <echo>a=${a}</echo> 
    <script manager="bsf" language="beanshell" classpath="${bshJar}"><![CDATA[ 
    project.setProperty("a", "fourth"); 
    ]]></script> 
    <echo>a=${a}</echo> 
</project> 

輸出:

a=first 
a=fourth 
0

你嘗試在ANT腳本。

<script language="javascript"> 
project.setProperty("my.property", "somevalue"); 
</script> 
0

你可以爲每個SRCFILE創建您的MacroDef一個新的屬性:

<loadfile srcFile="@{some.input}" property="@{some.input}_Prop"> 

<echo message="@{some.input} Contents: ${@{some.input}_Prop}"/>