如何使用Ant在war文件中包含Classpath Jars

时间:2014-12-05 15:31:20

标签: java ant jar war

我正在创建一个用于构建和部署项目的ant脚本。我的项目结构如下:

 Projectname
--src
--tst
--lib ( I have 5 jars here)
--resources
--WebContent
      --META-INF
      --WEB-INF
            --lib (I have 3 jars here)
            --properties
            --templates
            --stylesheets
            --web.xml

我的要求是我必须编写一个ant脚本来构建项目并在登台环境(非本地)中创建war文件。战争应该包含类路径中可用的所有jar文件(类路径有超过50个jar)。 但是当我运行我的蚂蚁脚本时,它只显示了8个罐子,这些罐子在lib文件夹中可用,并且不包括来自类路径的罐子。

如何在创建War文件时添加类路径?下面是我为创建战争而编写的脚本。

<target name="war" description="Bundles the application as a WAR file" depends="build">
            <echo> === PACKAGE WAR ====== </echo>
             <delete dir="target" failonerror="false"/>
             <mkdir dir="target"/>
            <war destfile="target/test.war" needxmlfile="false" >
                <fileset dir="WebRoot">
                    <include name="**/*.*"/>
                </fileset>
                <lib dir ="lib">
                    <include name="**/*.*"/>
                </lib>
<classes dir="WebContent/WEB-INF/classes"/>
            </war>
</target>

类路径在ant脚本中如下所示。

 <property name="ExternalJars.location" value="../ExternalJars"/>
 <path id="Services.classpath">
<fileset dir="lib">
        <include name="**/*.jar"/>
    </fileset>
</path>

3 个答案:

答案 0 :(得分:1)

尝试添加任务:

<war destfile="target/test.war" needxmlfile="false" > <fileset dir="WebRoot"> <include name="**/*.*"/> </fileset> <path> <path refid="Services.classpath"/> </path> <lib dir ="lib"> <include name="**/*.*"/> </lib> <classes dir="WebContent/WEB-INF/classes"/> </war>

答案 1 :(得分:0)

您的50个罐子在哪里?尝试在任务中添加类似路径的类路径文件夹。像这样:

<war destfile="target/test.war" needxmlfile="false" > <fileset dir="WebRoot"> <include name="**/*.*"/> </fileset> <fileset dir="${classpath_folder}"> <include name="*.jar"/> </fileset> <lib dir ="lib"> <include name="**/*.*"/> </lib> <classes dir="WebContent/WEB-INF/classes"/> </war>

答案 2 :(得分:0)

我找到了一个使用<war destfile="target/test.war" needxmlfile="false" > <fileset dir="WebRoot" /> <lib dir ="lib" /> <classes dir="WebContent/WEB-INF/classes"/> <mappedresources> <path refid="Services.classpath"/> <chainedmapper> <flattenmapper /> <globmapper from="*.jar" to="WEB-INF/lib/*.jar" /> </chainedmapper> </mappedresources> </war> 的解决方案,这有点让人感觉不舒服,但有效。

compile files ('libs/gson-2.2.4.jar')