ANT初学者在这里。我有一个名为Neo的软件包,并且在build.xml中遇到了问题。将Neo jar压缩到此扩展目录中时,

<unzip src="${output.dir}/Scala2.11/Neo.jar" dest="${standalone.jar.expanded.jars.dir}"/>


扩展目录中有一个名为“ targetFile”的文件
在上述解压缩步骤中,该路径被Neo.jar中位于路径下的另一个名为“ targetFile”的文件覆盖

src/services/targetFile


我需要确保Neo.jar中的这个“ targetFile”不会覆盖扩展目录中已经存在的“ targetFile”,而是将其自身连接到已经存在的“ targetFile”。到目前为止,这是我的方法:

<unzip src="${output.dir}/Scala2.11/Neo.jar" dest="${standalone.jar.expanded.jars.dir}">
  <patternset>
    <include name="src/services/targetFile"/>
  </patternset>
</unzip>


一旦我匹配了patternset中的文件,从语法上讲,如果我事先不知道扩展目录中存在“ targetFile”的路径,该如何使用ANT的Concat任务?实际上,再次查看此内容使我认为现在由于patternset只能解压缩“ targetFile”,但是本质上我需要解压缩所有内容,并对要解压缩的其中一个文件执行特殊操作。

最佳答案

解压缩每个.jar文件时,您需要排除src / services / targetFile条目,然后分别从每个归档文件中合并该条目:

<unzip src="${output.dir}/Scala2.11/Neo.jar" dest="${standalone.jar.expanded.jars.dir}">
    <patternset excludes="src/services/targetFile"/>
</unzip>
<unzip src="path/to/lib01.jar" dest="${standalone.jar.expanded.jars.dir}">
    <patternset excludes="src/services/targetFile"/>
</unzip>
<unzip src="path/to/lib02.jar" dest="${standalone.jar.expanded.jars.dir}">
    <patternset excludes="src/services/targetFile"/>
</unzip>
<unzip src="path/to/lib03.jar" dest="${standalone.jar.expanded.jars.dir}">
    <patternset excludes="src/services/targetFile"/>
</unzip>
<unzip src="path/to/lib04.jar" dest="${standalone.jar.expanded.jars.dir}">
    <patternset excludes="src/services/targetFile"/>
</unzip>

<concat destfile="${standalone.jar.expanded.jars.dir}/src/services/targetFile">
    <zipentry zipfile="${output.dir}/Scala2.11/Neo.jar" name="src/services/targetFile"/>
    <zipentry zipfile="path/to/lib01.jar" name="src/services/targetFile"/>
    <zipentry zipfile="path/to/lib02.jar" name="src/services/targetFile"/>
    <zipentry zipfile="path/to/lib03.jar" name="src/services/targetFile"/>
    <zipentry zipfile="path/to/lib04.jar" name="src/services/targetFile"/>
</concat>

07-28 00:09