On Dec 28, 2007, at 5:50 PM, Ken Krugler wrote:
Hello! Hope you all are having nice holidays. let me lob another
idea out there and see if you think I'm crazy...
How do you all feel about changing the directory layout so it plays
nicely with maven? While we are at it, how do you feel about
switching to maven for the primary build system?
My reasons to suggest this are:
1. working with maven artifacts makes plugin/app development loads
easier.
2. maintaining multiple build systems simultaneously seems like a
pain (I can't quite figure out how the lucene maven stuff works...
it seems overly complicated though)
3. For SOLR-303, solr-core needs to depend on solrj -- we can do
this with a simple change to build.xml, but it leaves us with a
directory structure that does not reflect the real dependencies.
It seems like a restructuring is called for regardless of the build
system.
4. Using maven, we can quickly add other nice build features like
clover, pmd, eclipse, and idea support.
5. Assuming we stick with cwiki for the the site release, we need
to figure out how to include the auto-export in our distribution.
The concerns I have heard about maven are:
1. past experience was awful, lets not go there
2. solr sometimes depends on snapshot builds
#1, I can't really argue with - My past experience with maven (a
long time ago) was terrible too. All my recent work with maven2
has been incredibly smooth.
#2, with maven, we can still put in hand built jar files, it is
just not the best practice. Currently, the only dependency that we
can't pull from a standard repository is: commons-csv-0.1-
SNAPSHOT.jar
In SOLR-19, I just uploaded a proof of concept layout/pom structure
with 4 artifacts:
1. solr-common (jar)
2. solr-client (jar)
3. solr-core (jar)
4. solr-server (war)
The one thing that is strange about our dependency graph is that
many of the tests for 'solr-client' depend on 'solr-server' and
'solr-core', so they would probably be in that package.
Is this something worth pursuing? Would we rather stick with ant
and either have maven build unofficial artifacts or jump through
lucene style hoops?
My input on this...
* Providing a Maven2 build would be useful for us. Currently when we
modify Solr, we do an Ant build and then manually push the resulting
jar to our in-house Maven repo, which works but isn't all that clean.
+1 I like the M2 repository and M2 conventions, but am less enamored
w/ M2 as a tool to actually execute targets/goals, and I have used it
fairly extensively. I tend to favor how Lucene does it these days.
* So I'd be in favor of changing the directory layout, but only for
my own selfish reasons :)
+1. I do like the way the M2 "standardizes" directories.
* I wouldn't be in favor of changing the build to rely on Maven2. We
use Maven internally at Krugle, and sometimes it works well, and
other times it's a royal pain in the butt. So having it as an option
would be nice, and handy for me personally, but I'd hate to foist
Maven on everybody else.
Again, +1. If it ain't broke, don't fix it. Keep the ANT build and
publish the Jars on the Maven repo is my vote.