[GSoC] Status Reoprt: Java Project Dependency Builder
Last week I started to build Maven projects from source repositories
using a forked maven process. Repositories were identified from maven
metadata. It had quite a lot of assumptions and still pulled
dependencies from central.
This week on the other hand was quite busy: I stared to fill out the
build API for projects built with Maven. I'm now able to find the
artifact to build (assuming its named pom.xml) even if its not located
in a reactor at the root of the repository. I've also forced the
forked dependency builder process to offline mode and set the local
repository to point to our built artifact repository that we create as
part of the process. I didn't actually get to test this out as I had
some trouble actually resolving all the dependencies.
Unfortunately if I want to use the maven APIs for resolving these
dependencies, I would have to be aware of the package name change
between maven 3.0 and 3.1. I started by hacking together the legacy
APIs that worked for both 3.0 and 3.1, but quickly abandoned it as
there many corner cases that I would have to be aware of. Of course
this resolution process was changed more significantly from 2.0 to 3.0
as well which means I would have to choose a maven version to target.
For the time being, I've decided to write a compatibility layer that
will work with both 3.0 and 3.1 so that a particular maven version is
not forced (maven 2 support will be left as a wishlist item for now).
There are a few more things to test, but I can say that it's working
quite well so far. Currently I'm building for maven 3.2.1 and working
This means that I didn't get to look at Ant builds (as expected).
Instead of looking at that next, I think the big thing for next week
is to flesh out the end to end API so that the plugin can be used as
is for a restricted set of projects. After I have something working
end to end, I can start adding compatibility for more projects, i.e.
Until next week!