title: What is an elegant way to set up a leiningen project that requires different dependencies based on the build platform?
body: <p>In order to do some multi-platform GUI development, I have just switched from GTK + Clojure (because it looks like the Java bindings for GTK never got ported to Windows) to SWT + Clojure.  So far, so good in that I have gotten an uberjar built for Linux.</p>
  
  <p>The catch, though, is that I want to build an uberjar for Windows and I am trying to figure out a clean way to manage the project.clj file.</p>
  
  <p>At first, I thought I would set the classpath to point to the SWT libraries and then build the uberjar.  This would require that I set a classpath to the SWT libraries before running the jar, but I would likely need a launcher script, anyway.  However, leiningen seems to ignore the classpath in this instance because it always reports that </p>
  
  <p>Currently, project.clj looks like this for me:</p>
  
  <pre><code>(defproject alyra.mana-punk/character "1.0.0-SNAPSHOT"
    :description "FIXME: write"
    :dependencies [[org.clojure/clojure "1.2.0"]
                   [org.clojure/clojure-contrib "1.2.0"]
                   [org.eclipse/swt-gtk-linux-x86 "3.5.2"]]
    :main alyra.mana-punk.character.core)
  </code></pre>
  
  <p>The relevant line is the <code>org.eclipse/swt-gtk-linux-x86</code> line.  If I want to make an uberjar for Windows, I have to depend on <code>org.eclipse/swt-win32-win32-x86</code>, and another one for <code>x86-64</code>, and so on and so forth.</p>
  
  <p>My current solution is to simply create a separate branch for each build environment with a different <code>project.clj</code>.  This seems kinda like using a semi to deliver a single gallon of milk, but I am using bazaar for version control, so branching and repeated integrations are easy.  Maybe the better way is to have a <code>project.linux.clj</code>, <code>project.win32.clj</code>, etc, but I do not see any way to tell leiningen which project descriptor to use.</p>
  
  <p>What are other (preferably more elegant) ways to set up such an environment?</p>