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>