Ant:在展开的目录上使用war任务

时间:2013-01-30 21:09:00

标签: java ant war

我对Ant比较陌生,我正试图找到最简单的方法来加强我的Web应用程序。

我已经有了构建目标,可以创建以下“爆炸的WAR”目录结构:

MyApp/
    src/
        ...
    gen/    <-- this gets created as a part of every build
        war/
            stylesheets/
                myapp.css
            views/
                index.jsp
                cool.jsp
                ...
            WEB-INF/
                web.xml
                lib/
                    (All of my dependencies)
                classes/
                    META-INF/
                        jdoconfig.xml
                    com/
                        myapp/
                            (All compiled binaries)

所以,考虑到当我准备创建WAR文件(使用<war/><zip/>或其他任何东西)的时候,我已经准备好了WAR的爆炸版本去。

我对<war/>任务的问题是,除了war/WEB-INF/lib之外,它似乎不支持WEB-INF/classes下的目录:

<war destfile="myapp.war" webxml="gen/war/WEB-INF/web.xml">
    <lib dir="gen/war/WEB-INF/lib" />
    <classes dir="gen/war/WEB-INF/classes" />
</war>

stylesheetsviews怎么样,或者我想要的其他内容呢?如果我想将文件或目录添加到WEB-INF/怎么办?如果我想在与WEB-INF/相同的级别添加某些内容,该怎么办? <war/>任务似乎太不灵活了。

无论哪种方式(因为我确定任务 灵活而且我只是没有“得到”它),我只想要最简单的方法来创建一个myapp.war早期构建目标在gen/war下创建的确切目录结构。提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以在war标签内使用文件集

我们的构建文件中的示例

<war destfile="${war.dest.file.name.without.extension}.war"      manifest="${build.dir}/MANIFEST.MF" webxml="${webcontent.dir}/WEB-INF/web.xml">
        <fileset dir="${webcontent.dir}" casesensitive="no">
            <exclude name="WEB-INF/lib/**"/>
            <exclude name="WEB-INF/classes/**"/>
            <exclude name="WEB-INF/web.xml"/>
            <exclude name="META-INF/context.xml"/>
         </fileset>
         <lib dir="${app.lib.dir}"/>
         <classes dir="${classes.dir}"/>
    </war>

答案 1 :(得分:1)

想出来,这更容易。如果您已经拥有自己的爆炸war目录,则<war/>任务会施加太多限制。只需拉链

<zip destfile="myapp.war"
    basedir="gen/war" update="true" />