Working with WAR Files

Creating WAR files is actually accomplished in the same way you create JAR files: through the jar command. The command-line interface to jar, and even the program's name, is based on the Unix tar command (TAR was originally the Tape ARchiver, though it's now used far more often to archive files for transfer over the Internet than to tape[19]). The normal usage pattern to create an archive is:

$ jar cvf jar-file.jar dir [...]

The c says you want to create an archive. The v is optional; it says you want a verbose listing as it goes. The f is required, and says that the argument following the letters (c, v, f . . .) is an output filename. The next and all subsequent filename arguments are input names, and can be files or directories. Directories are archived recursively. So, assuming you have your web application set up correctly and completely in a directory called my-webapp, you could do the following:

$ cd ~/my-webapp
$ jar cvf  ~/my-webapp.war .

Or on Windows, you could do:

C:\> cd c:\myhome\my-webapp
C:\myhome\my-webapp> jar cvf  c:\temp\my-webapp.war .

That little dot (.) at the end is important; it means "archive the contents of the current directory." Notice also that although it is a JAR file, we called it a WAR to indicate that it contains a complete web application; this is recommended in the servlet specification. Once you've issued the command, you should see output similar to the following:

added manifest adding: WEB-INF/(in = 0) (out= 0)(stored 0%) adding: ...

Get Tomcat: The Definitive Guide, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.