我正在创建一个用于构建和部署项目的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>
答案 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')