2013-04-10 32 views
0

我目前正在使用ojdeploy部署一個oracle adf項目。不幸的是,罐子的包裝並不像它應該那樣。使用螞蟻在一個罐子裏重組文件

所以我在我需要

lookAndFeel.jar/META-INF/adf/skins/lightsOff/images 
lookAndFeel.jar/META-INF/adf/skins/lightsOn/images 

合併有沒有辦法用螞蟻做這個路徑

lookAndFeel.jar/skins/lightsOff/images 
lookAndFeel.jar/skins/lightsOn/images 

圖像?

編輯

我讀Top 15 Ant Best Practices點13,在那裏他們的狀態,我應該用zipfileset。但我無法這樣做,因爲我的必需文件已經在jar中。最初的jar創建是通過ojdeploy完成的,因此我對jar的初始結構沒有影響。

+0

提取jar(unjar),移動文件(移動),重新創建jar(jar)。不應該太難。 – 2013-04-10 12:14:53

+0

@JBNizet不會造成太多開銷?雖然,我會很感激一個例子,因爲我對螞蟻很陌生。 – 2013-04-10 12:19:46

+0

先試一下,如果有問題就回來。 Ant有一個很好的文檔。 – 2013-04-10 12:22:04

回答

0

我想了解的問題是:

  • 你創建這個瓶子?
  • 你是合併新數據還是移動它?

正如其他人所說的,你需要unjar,挖掘結果,然後將其恢復。沒什麼大不了的:

<property name="target.dir" value="${basedir}/target"/> 
<property name="work.dir"  value="${target.dir}/work"/> 
<property name="munge.dir" value="${work.dir}/munge"/> 

<target name="munge.jar"> 
    <unjar src="${jar.file}" 
     dest="${munge.dir}"/> 

    <here be dragons.../> 

    <delete file="${jar.file}"/> 

    <jar destfile="${jar.file} 
     basedir="${munge.dir}"/> 
</target> 

由於不是100%肯定,你想要什麼,你就必須填寫<here be dragons.../>部分。你會移動,重命名,洗牌,刪除,並添加到你的心臟的內容。

另一種可能性是使用<mapper/>子實體重新格式化您的JAR文件,然後將其解鎖。

<target name="munge.jar"> 
    <unjar src="${jar.file}" 
     dest="${munge.dir}"> 
     <mapper type="glob" 
      from="skins/**/*" 
      to="META-INF/adf/skins/**/*"/> 
    </unjar> 

    <delete file="${jar.file}"/> 

    <jar destfile="${jar.file} 
     basedir="${munge.dir}"/> 
</target> 

我還沒有測試過上述內容,但它會給你一個想法。

+0

我讀過[Top 15 Ant Best Practices](http://www.onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.html)。第13點,他們說,我應該使用'zipfileset '。但我無法這樣做,因爲我的必需文件已經在jar中。最初的jar創建是通過'ojdeploy'完成的,因此我對jar的初始結構沒有影響。 – 2013-04-11 05:32:13

+0

@ Angelo.Hannes所以,你不建立所需的jar。我的回答是否以任何方式使用''幫助?基本上,你將不得不_unzip_和重建罐子。 ''可能會使這更容易。 – 2013-04-11 12:44:25

+0

您的第一個解決方案與我在JB Nizet幫助下創建的解決方案類似。所以我想我會接受你的答案。 – 2013-04-11 14:20:23