Ant构建包括来自lib子目录的jar

时间:2017-01-11 14:14:40

标签: java ant java-8 war

我有一个非常特殊的场景,我的项目lib目录下有很多子文件夹,其中包含我正在使用的jar的依赖jar。例如

lib/abc.jar
lib/abcDependent/abc1.jar
lib/abcDependent/abc2.jar
lib/abcDependent/abc3.jar

现在,由于我正在进行ant build,我只想在没有目录结构的情况下将所有jar包含在战争中。但下面的代码片段也包括目录结构。

<lib dir="${lib.dir}">
                <include name="dp-common-${project.major.verson}.${project.minor.version}.jar" />
                <include name="**/*.jar" />
            </lib>

期待最终在我的战争的lib目录中拥有所有的jar。像

lib/abc.jar
lib/abc1.jar
lib/abc2.jar
lib/abc3.jar

提前致谢。

2 个答案:

答案 0 :(得分:1)

而不是&lt; lib&gt;,它只是在创建的.war文件中将文件集放在WEB-INF / lib下的简写,而是使用mappedresources子元素:

<zipfileset prefix="WEB-INF/lib">
    <mappedresources>
        <fileset dir="${lib.dir}">
            <include name="dp-common-${project.major.verson}.${project.minor.version}.jar" />
            <include name="**/*.jar" />
        </fileset>
        <flattenmapper/>
    </mappedresources>
</zipfileset>

答案 1 :(得分:0)

如果我必须这样做,我宁愿采用以下方法。

  • 使用相同的目标结构创建一个临时目录,以创建war文件。
  • 现在将jar文件复制到目标目录,在您的情况下为lib
  • 最后创建档案
  • 删除上述完成后创建的临时目录

这样,您应该能够使用中间目录为最终包创建相同或不同的目录结构。