Why no Maven for libgdx? (And why on earth are you commiting binaries!?)

At work we are using Maven2 to manage all our interproject and external dependencies. Combined with the automatic build system Continuum and Archiva for repository managment we got a pretty solid basis to manage all our code and builds.

So i’m used to working with this kind of enterprisy environment (altough i sometimes want to beat the crap out of Maven as well as Continuum). All our projects in SVN are pure code and resources with pom files that one can use to setup projects for ones prefered IDE (i like Eclipse, some use Idea, others use Netbeans). Also, there’s not a single binary in SVN which is a “good thing”(tm).

So why am i such a lazy bastard when it comes to libgdx? Not only do i not use any dependency managment but i also commit binaries to SVN!

There’s a couple of reasons. I don’t use Maven as i think that in it’s current state a fullblown dependency managment system is overkill. Maven also doesn’t play to well with building native code which libgdx has quiet a lot of. I know there’s ways to get native code compilation going, but frankly it’s a big pain in the buttocks. I simply don’t want to invest that much time to get all this going on multiple platforms.

The binaries are in the SVN as a lot of people want to use the latest and greatest without waiting for me to package everything up properly. Now, one could argue that people could build stuff themselves. That is true to some extend but setting everything up is often beyond what one would be willing to do.

I know those are actually lame excuses. I’m aware of the lack of a proper build system, just so you know :). If somebody wants to step up and help me out with this just drop me a mail!

7 thoughts on “Why no Maven for libgdx? (And why on earth are you commiting binaries!?)

  1. Yah.. As much as I’m eager to release to reach that proper balance of well organized management is going to be very difficult for my project TyphonRT. I’m leaning very much so into using Git and GitHub in combination of scripts likely similar to Repo and such as used with Android itself. I have ~30-50 components / modules and really really really hope submodules in Git are not borked or that it’s not overly complex (though it likely is..)! Where’s my release engineer! :: sigh :: native build dependencies not withstanding with libgdx at least you are releasing an integrated project (IE one project / source repo / one jar file)… Mine is very component oriented / distributed, so it’s gonna be a pain to setup and get right. I think most will use official builds or nightly snapshot releases instead of the source itself though.

    On an unrelated note. Have you tried the official FroYo build yet and verified any OpenGL 2.x issues like the one you found a month or so ago with a RC build?

  2. Even if you finally get a nice build system setup in the future, providing a binary distribution would be essential anyway, so as you said, this is sorta a nice short cut to that anyway.

    In larger projects with tons of dependencies that change all the time it might be a bad thing to revision your dependency binaries, but in tiny projects like this I usually make my repo “build-able” by including the dependencies like you are doing. NBD IMO 😛

  3. You could though make the released libraries available from some repository? So game projects using maven could depend on your libraries without manually installing your libs to the local repository.

  4. How about generating an ant file while creating projects? Part of the ant script can download libgdx distribution and unpack files into the proper place. This way you could commit only sources, and ant would fill in your binaries when needed. The best part of this solution is that it is a pure add-on, and anyone using present way of commiting binarier would not need to change anything.

  5. I’m so spoiled by maven, I’m hesitant to even try using a library that isn’t available in the Maven Central Repository or some another repository. I’m accustomed to just generating a maven project and declaring my dependencies. They get downloaded and dealt with automatically. If I want the latest and greatest from the development team, I’ll use the appropriate SNAPSHOT version which their CI system can automatically publish on each stable build. I don’t have to manually download binaries from a VCS and copy them into my project.

    You might not want to spend the energy investing in a “fullblown dependency managment system” but I don’t want to spend the energy screwing with each of my third-party dependencies :p

  6. I too use Maven like you do. I too like the frictionlessness it offers (most of the time). The problem is that Maven does not integrate well/at all with Android and GWT.

Leave a Reply

Your email address will not be published.