2013-04-10 38 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