[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[GSoC] Status Reoprt: Java Project Dependency Builder



Hey guys,

Last week I was able to fetch source of artifacts which has an <scm/>
tag in their maven metadata. By leveraging the maven-scm-plugin, I was
able to get the vast support of VCSs for free. It also provides a well
documented interface for extension in case other VCSs come out or
someone is using one which is currently unsupported. I've tried to
make upgrading the maven-scm-plugin possible without cluttering the
mojo configuration using plexus configuration elements. This doesn't
make it impossible to change, but again, not very easy. I might want
to revisit this at a later time.

This week I started to work on actually building a checked out
project. My focus has been maven projects. I've been able to build
simple (single module) projects easily and have started to look at
multi-module projects. This has brought up a few issues.

I recall reading that packaging a maven project for debian requires
maven to be in offline mode during the build. I can try to emulate
that by dumping artifacts into a built artifact repository and use
that as the only repository during the build. You are still kind of
cheating because you need an online repository to get the artifact
metadata in the first place, but since I've opted to fork off a maven
process for building, we can force offline mode there. This will
require all dependencies, which includes parent poms, dependencies,
plugins and their dependencies to be built before the project can be
built. We can't rely on just dependencies and parent poms because one
of the plugins or maybe even one of the plugin dependencies could be
in the reactor, or a proper dependency that should be built. This begs
the question of where to stop as plugins will inevitably depend on
maven-core.

My goal for next week, although is a little ambitious considering what
is left for building maven projects, is to look at ant projects and
see if I can come up with a good way to determine which way to build.
I think ant should always take preference if there is a build.xml file
regardless of a pom.xml file. I also forsee problems determining the
jar file which represents the built artifact. I could simply diff the
tree before and after the build to find new jars, but this doesn't
help if there are 2 or more jars built for the project. It really
doesn't help that ant doesn't have the same standards for building
that maven does. I may need project specific commands to locate the
artifact in question.

Cheers,
Andrew


Reply to: