2013-07-07 65 views
1

我需要使用ant任務來更新現有耳朵文件,排除一些將在WAS共享庫上提供的jar文件。我不想再次創造耳朵,只需要更新已經建成的耳朵,因爲我已經看到帖子更新耳朵,但這些正在創造一個新的耳朵。我的問題是,我不想重建耳朵。使用ant任務排除現有耳朵的罐子

This是通過maven做到這一點的一種方式,但我想通過耳朵任務螞蟻做到這一點。

謝謝。

+0

重新創建ear文件有什麼問題?你甚至認爲可以刪除文件的某些部分而不重寫它? –

+1

耳朵文件是自動生成的,所以我不想改變它的形成。我只想更新耳朵的內容,就像[this](http://stackoverflow.com/questions/15199535/update-a-single-file-in-the-ear-file-in-a-better-方式),但通過螞蟻腳本。 – emarshah

+0

7zip讓你認爲它直接在檔案中更新文件,但實際上並沒有。它重新創建整個檔案。只需創建一個ant任務,將EAR中的所有內容提取到一個空的臨時文件夾中,然後更新或刪除要更新/刪除的文件,然後重新創建ear文件(它只是一個擴展名爲.ear的zip文件)臨時目錄內容。 –

回答

1

螞蟻耳朵,戰爭和罐子任務可能能夠更新耳朵,戰爭和罐子,但我不會依賴它。創建耳朵是一項非常快速的任務 - 幾秒鐘,所以它從來都不是我探討的問題。

如果因爲所需的文件不再可用而無法重新創建耳朵,則可以嘗試解壓縮耳朵,設置所需的內容並從頭開始重新構建。

<unzip src="${ear.file}" 
    destdir="${temp.location}"/> 
<delete file="${ear.file}"/> 

<here be dragons.../> 

<zip destfile="${ear.file}" 
    basedir="${temp.location}"/> 

你可以使用<patternset/> S,或<zipfileset/> s到控制什麼獲取拉上並解壓,但是它可能更容易解壓縮和重建。

如果它讓你感覺好一點,你可以使用<ear/>而不是<zip>,但是你必須指定appxml參數。這只是更容易使用<zip/>