The structure of WAR files is slightly different from the
structure of ordinary JAR files. In particular, when
constructing a WAR file, the src/resources
directory is ignored and the src/web
directory is used instead. Anything in
src/web
is added to the WAR file at its
root, just as with src/resources
for a JAR
file. Other than the name, there is no difference between how
these directories are used. Additionally, the
src/conf
directory is used to populate the
WEB-INF
directory in the WAR rather than the
META-INF
. At present, there is no way to
add files to META-INF
other than manually
creating a META-INF
directory under
src/web
. (The
MANIFEST.MF
file is created automatically by
the jar task.) Another difference is that
compiled classes go in WEB-INF/classes
instead of at the root as with a normal JAR file.
If the abuild.war-type
property in
Abuild-ant.properties
has the value
server
, we copy all JAR files in the
abuild.classpath
variable into the
WEB-INF/lib
directory. If
abuild.war-type
has the value
client
, they are copied into the root of the
WAR file. Before copying the JAR files from the classpath into
the WAR file, abuild places them in the
abuild-java/classpath
directory. If you
need to create a WAR file that includes files from
abuild.classpath
both at the root and in the
WEB-INF/lib
directory, create a
client
WAR file and use a
pre-package hook to move some of the files
from classpath
into
src/conf/lib
(remember that both of these
paths are relative to the output directory, which is directory
from which ant is run) so that they
will end up in WEB-INF/lib
.