title: Obfuscate Java source code to hand out to clients
body: <p>I'm wondering if there is a way to generate an <em>obfuscated buildable version</em> of my maven project and hand it out to clients, the obfuscation is just for protection and make it hard to steal.</p>
  
  <p>I'm using <em>proGuard</em> to obfuscate jars, but this obfuscation is at the ByteCode level, just like it was answered in this thread <a href="https://stackoverflow.com/questions/28948302/how-can-i-obfuscate-java-source-code-for-external-gwt-development">Obfuscate Java Source Code</a></p>
  
  <p>If <em>Obfuscation</em> isn't possible, how can I hand out my source code and be sure that it won't be <strong>stolen</strong> (or just make it hard, by making poorly organised), although the client should be able to build and run the code.</p>
  
  <p>EDIT : operations need to be performed :</p>
  
  <p>1- remove all comments from source code.</p>
  
  <p>2- merge all classes in one single package.</p>
  
  <p>3- Have meaningless class names : (e.g. A, B, C ..)</p>
  
  <p>4- remove all Unit tests.</p>