我有几个JAR文件模式集,比如
<patternset id="common.jars">
<include name="external/castor-1.1.jar" />
<include name="external/commons-logging-1.2.6.jar" />
<include name="external/itext-2.0.4.jar" />
...
</patternset>
Run Code Online (Sandbox Code Playgroud)
我还有一个包含lib元素的'war'任务:
<lib dir="${src.dir}/jars">
<patternset refid="common.jars"/>
<patternset refid="web.jars"/>
...
</lib>
Run Code Online (Sandbox Code Playgroud)
但是,这样,我最终得到的WEB-INF/lib包含我的模式中的子目录:
WEB-INF/lib/external/castor-1.1.jar
WEB-INF/lib/external/...
Run Code Online (Sandbox Code Playgroud)
有没有办法压扁这个,所以JAR文件出现在WEB-INF/lib下的顶层,无论模式中指定的目录是什么?我看了看,mapper但似乎你不能在里面使用它们lib.
我不得不手动生成WAR目录或声明库子目录,所以我想出了这个.似乎工作,显然你需要根据自己的需要调整它:
<war destfile="build/output.war" webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}" />
<mappedresources>
<fileset dir="${lib.dir}" includes="**/*.jar" />
<chainedmapper>
<flattenmapper/>
<globmapper from="*.jar" to="WEB-INF/lib/*.jar" />
</chainedmapper>
</mappedresources>
</war>
Run Code Online (Sandbox Code Playgroud)