2013-01-24 41 views
2

我有一個默認的log4j屬性文件,我想附加一個特定於應用程序的配置。該文件包含(與其他文件)在.zip文件中。我使用Ant來解壓zip的內容(包括log4j屬性)。我想在解壓縮時添加這行。這可能嗎?如何將一行添加到由Ant解壓縮的文件中?

<unzip dest="some.dest"> 
    <fileset refid="some.fileset" /> 
    <!-- Append a line to 'log4j.properties` file --> 
</unzip> 

也許解決方案只是附和我已經解壓縮後。

+0

不知道香草螞蟻一條筆直的路,但沒有必要與解壓縮整個檔案搗鼓..等等。 ,處理log4j.properties就足夠了,請參閱下面的答案。 – Rebse

回答

1

您可以使用Ant「回聲」任務與「追加」標誌:

<echo file="log4j.properties" append="true">${line.separator}</echo> 

回聲任務文檔這裏進一步參考:

http://ant.apache.org/manual/Tasks/echo.html

+0

解壓縮不支持嵌套的回聲元素。 –

+0

我的假設是,你可以把它放在同一個目標中的「unzip」任務,而不是嵌套。是否有理由需要它嵌套? – DreadPirateShawn

+0

不是真的,如果你知道zip文件的內容。如果zip文件夾有一些奇怪的文件夾結構,則可能不知道屬性文件的完整解壓縮文件夾路徑。所以如果你可以在解壓縮文件中追加它,它會知道把它放在哪裏。 –

0

無需解壓整個zip文件,使用

如果log4j.properties駐留在拉鍊的rootdirectory:

<project> 
    <!-- unzip log4j.properties only --> 
    <unzip src="foo.zip" dest="."> 
    <patternset> 
     <include name="log4j.properties" /> 
    </patternset> 
    </unzip> 
    <!-- put new key in or overwrite if already existing --> 
    <propertyfile file="log4j.properties"> 
    <entry key="log4j.logger.com.foobar.xyz" value="ERROR" /> 
    </propertyfile> 
    <!-- update zip with modified log4j.properties --> 
    <zip destfile="foo.zip" update="true"> 
    <fileset dir="." includes="log4j.properties" /> 
    </zip> 
</project> 

否則,如果log4j.properties駐留在拉鍊的任何子目錄:

<project> 
    <!-- unzip log4j.properties only --> 
    <unzip src="foo.zip" dest="."> 
    <patternset> 
     <include name="**/log4j.properties" /> 
    </patternset> 
    </unzip> 
    <fileset dir="." includes="**/log4j.properties" id="foo"/> 
    <!-- put new key in or overwrite if already existing --> 
    <propertyfile file="${toString:foo}"> 
    <entry key="log4j.logger.com.foobar.xyz" value="ERROR" /> 
    </propertyfile> 
    <!-- update zip with modified log4j.properties --> 
    <zip destfile="foo.zip" update="true"> 
    <fileset dir="." includes="${toString:foo}" /> 
    </zip> 
</project> 
+0

我其實需要解壓所有文件。 –

相關問題