Erik Hatcher told me offline, and I confirmed, that the directory solr/server/solr-webapp/ was being deleted when Solr is run from a trunk checkout. In solr/server/contexts/solr-jetty-context.xml, we tell Jetty to use this directory as its tempDirectory.
Chris Hostetter (Unused) told me offline that he suspected that Jetty 9's new option to persist its temp directory (persistTempDirectory), which defaults to false, was causing this problem: when Jetty shuts down gracefully and this option is not set to true, its temp dir is deleted.
I verified that this is the case: after ant example and bin/solr start, solr/server/solr-webapp/ holds the exploded war, but after bin/solr stop, solr/server/solr-webapp ceases to exist.
When I add the following inside the <Configure> tag in solr-jetty-context.xml, the temp dir and the exploded war contained within are left intact after bin/solr stop:
I think the above addition is the way to go.
Alternatively, to preserve the solr/server/solr-webapp/ directory, we could tell Jetty to use a sub-directory, but leave the temp dir persistence option at false - I tested this and it worked - when I changed the tempDirectory setting to include a sub-directory named tempdir/ as shown below, the sub-directory was created at startup and deleted at shutdown, leaving the parent directory intact:
<Set name="tempDirectory"><Property name="jetty.base" default="."/>/solr-webapp/tempdir</Set>
If there are no objections, I'll add the persistTempDir=true setting to solr-jetty-context.xml tomorrow.