You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:45:31