title: How to maintain a group of apps with shared libraries that change often?
body: <p>I have a lot of small-ish Java command-line apps that have to use a vendor set of jars to make their connection to the servers, and while writing these apps has been pretty easy, maintaining them is turning out not to be.</p>
  
  <p>I built them using Maven and some templates that gave me a pretty quick turnaround on development time, but these are all standalone command-line apps so far. </p>
  
  <p>The pain comes from the updates to the vendor servers.  Whenever it happens, it forces me to recompile all of these applications with the new jars in play, otherwise I'd get <code>SerialVersionUID</code> Exceptions and borked apps.</p>
  
  <h2>What I'm considering</h2>
  
  <p>I was thinking that it would be possible to use Maven to generate the app and then throw it in an <strong>app server</strong> with the server providing a set of shared vendor <code>.jars</code> in whatever <code>/shared</code> classpath it provides.  That way I could just update the <code>.jars</code>, restart the server, and everything will likely continue without error.  </p>
  
  <p>However, I'm not sure what is required to get that working.  They aren't <code>.war</code>'s, and most of these apps use other <code>.jars</code> besides my code that isn't usually shared.</p>
  
  <h2>Questions</h2>
  
  <ol>
  <li>What kinds of deployments work like this? </li>
  <li>Are there other ways to do this that I'm missing?</li>
  <li>Any tutorials, frameworks, etc., that would make this simpler?</li>
  </ol>