Mavenization of jME

Hey everyone,



This is my first forum posting and I would love to contribute to the jME community.

In my professional life I am currently working on converting a legacy java project with a crazy build process into a Maven compatible project.

After spending some time playing with jME I felt that it too could benefit from adhering to the Maven standard which is becoming prevalent in the java world. Myself, along with others, have experienced difficulties just getting an environment up and running due to the dependent native libraries. If you haven't heard the virtues of Maven I would recommend at least giving the site a once over, http://maven.apache.org/. It would be great to see jME obtain continuous integration and a standardized build/release process, as it would help increase the quality/stability of the product, as well as make it easier for any developer familiar with Maven to get an environment up and running quickly.



If this doesn't appeal to the dev community here I would appreciate knowing why. If there are good reasons not to adopt the standard, I would love to help out on this project in any other ways possible.

I don't personally have a problem with Maven, but think it often over complicates the process, so as long as Ant is still supported I have no problems with having the ability to build everything with Maven as well.  However, I believe others have mentioned this before and their biggest trouble was jME dependencies like LWJGL that would first need to be supported first.

see also this recent thread : http://www.jmonkeyengine.com/jmeforum/index.php?topic=6515.0

We already use maven for jME at work (see pom.xml in cvs). The difference to the Ant scripts is, though, that this pom builds a single jar.

Well for dependencies that don't already exist in the main maven repository we could always package up their latest stable and call it 1.0-JME or something like that.



I checked out that other thread and it looks like 'fl' got something working without too much difficulty.



After mavenizing jME and whatever unmavenized dependencies there are, it would be a lot easier to find new members for the community. Even end-users would have an easier time of it.

I could create a standard game 'archetype'… With one maven command you would be presented with a fully operational project. Imagine how much simpler that would make the getting started tutorial…



There are plugins to package projects into webstart applications that are maturing rapidly.



We could consider installing a continuous integration server to ensure our tests are passing all the time.



Bottom line, I believe there is much to be gained and little to lose by attempting such a conversion.



If you are concerned that maven will add complexity to the project I must beg to differ. Assuming a project follows maven conventions, there is little to write other than declaring what your project depends on. If you want to package your project all you have to do is type 'mvn package'. One build lifecycle for all java applications isn't such a bad idea. This way you avoid learning the ins and outs of each project's custom ant build.






The best solution would be to convince the developers of the respective libraries to release on ibiblio as well. Currently the important dependencies are

lwjgl 1.1.2

lwjgl_util_applet (from lwjgl 1.1.2)

jinput (some unknown version)

jogg 0.0.7

jorbis 0.0.15

(All of these include native libraries as well)



With these dependencies the current pom.xml builds fine.



I'm not sure what you mean with "Mavenization", as there already is a pom.xml. If it means to drop the ant stuff, this would not be ok for some people, I'm afraid:

  1. Maven works nicely with a decent internet connection only
  2. Ant support is much better in current IDEs than Maven 2 support (e.g. there is no decent eclipse plugin to resolve Maven dependencies smoothly)



    If it means to split the pom.xml into multiple modules to have an equivalent to the jars from the ant file. That's probably nice for some people. Though I would prefer to keep that single jar coming out of my current continuous integration server. So we should probably have additional poms for that.



    Finally ftp access to jmonkeyengine.com is still broken, so uploading stuff to a maven repository on this site can be done my mojomonk only.

Nice that someone want move JME to maven too :wink:



Couple days ego I spend a while doing this … but then I have much work to do, and hadn't time to play with it.



Now I have my private repository with all external dependencies that are required by JME. I wrote email to LWJGL's authors and get permission to put LWJGL into our (JME's) public repository. I don't know what about other libraries … I can ask.



About dependencies, as I found out later, I worked with not very fresh version of code. There was (imho) very simple dependencies to resolve. So I try small changes and now have multiproject that build all JME's jars.

I think that most hard dependency to solve is between jme.jar and jme-awt.jar .



Give me a sign if you think that part of my work can be helpful.

/ fl

I've not used Mavin (yet), but I keep an open mind. I'm not really an Ant person either, but manage to make things work. Well, I found an interesting discussion thread that may be of interest to you folks:  http://blogs.codehaus.org/people/brett/archives/000678_why_do_you_hate_maven.html


very old post btw (still maven 1?)