Hello OMERO, ImageJ2 and Fiji developers,<br><br>I wanted to let you know that I just committed an experimental branch to LOCI's SVN that reorganizes the components as Maven projects. At the moment the following components have been migrated:<br>
<br> * projects/bio-formats<br> * projects/loci-common<br> * projects/loci-plugins<br>
* projects/ome-xml<br> * forks/jai<br> * forks/mdbtools<br> * forks/poi<br> * stubs/lwf-stubs<br><br>I will be migrating the remaining components, as well as doing the same for ImageJ and imglib in our Git repositories, next week. If there are no major obstacles or objections, I will also merge the branches to trunk/master within the next 2-6 weeks, and announce to relevant lists. These changes should make it easier for Fiji to adopt ImageJ2 as it develops without worrying about transitive dependency problems.<br>
<br>As part of this effort, I set up a Nexus repository at <a href="http://loci.wisc.edu:8081/">http://loci.wisc.edu:8081/</a>, which you are welcome to try out. In related news, as some of you already know, we also set up our own Hudson at <a href="http://loci.wisc.edu:8080/">http://loci.wisc.edu:8080/</a>. (But note that these URLs may change again to "<a href="http://dev.loci.wisc.edu">dev.loci.wisc.edu</a>" once our new developer server arrives.)<br>
<br>One major advantage of Maven is that you can check out only the project you want to build, rather than the entire LOCI Software repository. For example, you can:<br><br>$ svn co <a href="http://loci.wisc.edu/svn/java/branches/maven/projects/bio-formats">http://loci.wisc.edu/svn/java/branches/maven/projects/bio-formats</a><br>
$ cd bio-formats<br>$ mvn jar:jar<br><br>To build bio-formats.jar.<br><br>You don't need the source for the dependent projects because it will fetch all the dependencies as binaries from our Nexus server and store them in your local Maven repository (in ~/.m2/repository).<br>
<br>You can also generate an Eclipse project with:<br><br>$ mvn eclipse:eclipse<br><br>You just have to define a classpath variable called M2_REPO pointing at ~/.m2/repository and you're ready to go (or you can the eclipse:configure-workspace target to do it... or you can use the m2eclipse Eclipse plugins).<br>
<br>Alternately, you can check out the entire source tree as before, and create Eclipse projects with project dependencies rather than JAR dependencies:<br><br>$ svn co <a href="http://loci.wisc.edu/svn/java/branches/maven">http://loci.wisc.edu/svn/java/branches/maven</a><br>
$ cd maven<br>$ mvn eclipse:eclipse<br><br>This will compile and build the source for all Mavenized projects—it works because there is an aggregate project in the base directory declaring the involved submodules.<br><br>
I haven't tested it yet but Maven supposedly works well with NetBeans and IDEA also.<br>
<br>In the conversion to Maven, I was amazed how much metadata I had independently identified and declared in either custom Ant build.properties files, or in my hacky <a href="http://scan-deps.pl">scan-deps.pl</a> dependency analysis script in the base directory. With Maven It should be very doable to migrate away from those custom solutions now. E.g., you can analyze the dependencies for correctness with:<br>
<br>$ mvn dependency:analyze<br><br>In conclusion, I am unilaterally very impressed with Maven so far. And from what I've read, it believe it will play nicely with OMERO's usage of Ivy.<br><br>For those with time and interest, feel free to check it out. Any feedback is welcome!<br>
<br>-Curtis<br>