title: Google App Engine WEB-INF and META-INF
body: <p>When you create a new <strong>Web Application Project</strong> using the Google-Eclipse plugin, it creates an entire project directory structure for you, including:</p>
  
  <pre><code>src/
      META-INF/
          jdoconfig.xml
          persistence.xml
  war/
      WEB-INF/
          lib/
          web.xml
          ...etc.
  </code></pre>
  
  <p>First off, my <em>understanding</em> was that <code>META-INF/</code> was only for utility JARs, not for web apps (WARs). So to see <code>src/META-INF/*</code> in the project caught me by surprise. But then I've seen examples of GAE web apps that package like so:</p>
  
  <pre><code>TheWebApp.war/
      WEB-INF/
          lib/
          classes/
              META-INF/
          web.xml
          ...
      blah.jsp
      ...etc/
  </code></pre>
  
  <p>With <code>WEB-INF/classes/META-INF/</code>! On top of this, I don't see any mention of GAE projects and a <code>MANIFEST.MF</code> directory, which I always see used packaged under <code>META-INF</code>. Now I'm <em>really</em> confused.</p>
  
  <p>So I think I first need confirmation/clarification on what the role of <code>META-INF</code> and <code>WEB-INF</code> are in general, then understand how they can be used together inside the WAR of <em>any</em> web application, and then understand any idiosyncrasies (if they exist) that GAE places on its WAR structures.</p>
  
  <p><strong>Note:</strong> I'm not using Maven and don't intend to for at least the next 6 - 12 months (I just don't have time to learn it right now). So if any of the answers to these questions depend on whether you're using a Maven-based buld or not, I'd prefer the non-Maven answers as I'm using Ant/Ivy.</p>
  
  <p>So I ask:</p>
  
  <ol>
  <li>What are the normal contents of a <code>META-INF</code> directory, for utility (library) JARs, executable JARs and WARs? Is a <code>MANIFEST.MF</code> necessary for WARs (GAE- and non-GAE alike), why or why not?</li>
  <li>Where am I supposed to put non-web resources so that their available to the runtime classpath? For instance, say I have <code>environment.properties</code> or <code>myapp-custom-resource-config.xml</code>...where do I put these? In <code>WEB-INF/</code>, <code>WEB-INF/classes</code>, <code>WEB-INF/classes/META-INF</code>? Somewhere else?</li>
  <li>What are the proper contents of a GAE project's <code>WEB-INF</code> and <code>META-INF</code> directories, and what's the correct way of packaging them?</li>
  </ol>
  
  <p>Thanks in advance.</p>