Ant War Task:如何指定多个含类文件与依赖库的文件夹
使用Ant War Task打包多子项目Java WebService项目
Ant War Task完全支持从多个独立文件夹打包类文件和依赖库,不需要预先将所有文件合并到同一目录,直接通过配置多组文件集即可实现。
类文件的多目录打包配置
通过<war>任务下的<classes>标签,你可以添加任意数量的<fileset>,每个<fileset>指向一个子项目的编译输出目录。示例配置如下:
<war destfile="my-webservice.war" webxml="WebContent/WEB-INF/web.xml"> <!-- 主Web项目的类文件目录 --> <classes dir="WebContent/WEB-INF/classes"/> <!-- 子项目A的编译输出目录 --> <classes> <fileset dir="subproject-A/target/classes"/> </classes> <!-- 子项目B的编译输出目录 --> <classes> <fileset dir="subproject-B/target/classes"/> </classes> </war>
每个<fileset>还支持通过includes/excludes过滤特定文件,满足更精细的打包需求。
依赖库的多目录打包配置
依赖库的处理逻辑和类文件一致,通过<war>任务下的<lib>标签添加多组<fileset>,指向不同子项目的依赖库目录:
<war destfile="my-webservice.war" webxml="WebContent/WEB-INF/web.xml"> <!-- 主Web项目的依赖库目录 --> <lib dir="WebContent/WEB-INF/lib"/> <!-- 子项目A的依赖库目录 --> <lib> <fileset dir="subproject-A/lib"/> </lib> <!-- 子项目B的依赖库目录 --> <lib> <fileset dir="subproject-B/lib"/> </lib> <!-- 类文件配置... --> </war>
如果子项目的依赖库有重复,Ant会自动处理重复文件(默认保留第一个遇到的版本,可通过duplicate属性调整策略,比如设置为fail或preserve)。
完整示例脚本
<project name="WebServiceBuild" default="war" basedir="."> <target name="war"> <war destfile="dist/my-webservice.war" webxml="WebContent/WEB-INF/web.xml"> <!-- 打包Web资源 --> <fileset dir="WebContent" excludes="WEB-INF/classes/**,WEB-INF/lib/**"/> <!-- 多来源类文件 --> <classes dir="WebContent/WEB-INF/classes"/> <classes> <fileset dir="subproject-A/target/classes"/> </classes> <classes> <fileset dir="subproject-B/target/classes"/> </classes> <!-- 多来源依赖库 --> <lib dir="WebContent/WEB-INF/lib"/> <lib> <fileset dir="subproject-A/lib"/> </lib> <lib> <fileset dir="subproject-B/lib"/> </lib> </war> </target> </project>
内容的提问来源于stack exchange,提问作者Jörg
相关产品推荐
相关产品推荐

