Hey Bobby, Thanks for all the info. I’m currently working on implementing a maven build system for storm, so I’d be interested is seeing what you have.
Some notes in-line below. - Taylor On Dec 23, 2013, at 11:50 AM, Bobby Evans <[email protected]> wrote: > I also agree that having two build systems is a pain, but both maven and > lein currently have different sets of issues. I know because I maintain > both build systems for storm for different reasons. I am very happy to > give our maven build scripts as a starting point if someone is interested. > > The current clojure build plugin for maven will not output any error > messages unless you are using clojure 1.5 or above (or 1.4 with my patch > on it). > http://dev.clojure.org/jira/browse/CLJ-1154 What version of the plugin are you using? I’ve seen some “silent error” issues, but only under with certain clojure compilation problems. There might be some ways to work around this. > The maven test runner will also not run a test case in isolation, it must > be all or nothing. In addition it has no way to fail the build if the > tests fail. If the tests crash horribly the build will fail, but not on > simple test failures. This has apparently been fixed. I’ve been working with version 1.3.17, and failed tests fail the build. > > Lein has bad multi-project integration and there are no good tools for > integrating it with Jenkins. Test reports do not come out in a format > that Jenkins can read, there are no easy tools for doing code coverage > analysis, and pushing/installing packages to repos is a pain. Even the > dependency resolution is a pain, this is why the build actually creates a > pom.xml and calls into maven to place all of the dependencies in a single > directory. > > We need to decide which of these two systems is going to be the best long > term, and which errors need to be fixed before we can drop the other build > system (CLJ-1154 is a blocker for me on maven). > > Also be aware that having both maven and lien in a multi-module project > can also be really ugly. I am sure there are things we could do to make > this less ugly, but we did not want to modify the lein build process at > all so for us it really is ugly. This is because maven requires the pom > file of sub-projects to be called pom.xml, and under lein the part of the > build that gathers the dependencies for packaging generates a pom.xml, so > we had to create new maven specific directories with a pom.xml in it and > symlinks back to the src and test directories. I agree completely. I think supporting both leiningen and maven is a no-go. > > I personally am fine with either solution so long as the integration > issues are fixed. I am happy to help in either effort. But from what I > see lein has some structural issues with multi-project builds that may be > difficult to resolve, but maven’s clojure plugins have a ways to go before > they are good enough for me as a developer to consider them as my primary > build system. > > —Bobby > > On 12/23/13, 10:04 AM, "Herbert Mühlburger" <[email protected]> wrote: > >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA256 >> >> +1 for maven. >> >> Am 23.12.13 14:11, schrieb Hugh Xedni: >>> +1 for maven. >>> >>> >>> On Sat, Dec 21, 2013 at 7:06 PM, Supun Kamburugamuva >>> <[email protected]>wrote: >>> >>>> I'm also trying to develop on storm and had some problems with >>>> Leiningen. For a developer like me who is familiar with maven, >>>> switching Storm to maven will be a nice thing. >>>> >>>> Thanks, Supun.. >>>> >>>> >>>> On Sat, Dec 21, 2013 at 3:35 PM, Ed Kohlwey <[email protected]> >>>> wrote: >>>> >>>>> Maven has much better IDE tooling built on top of it. While >>>>> Lein has some minor advantages for those who want to get >>>>> started quickly in Clojure, it doesn't have good multi module >>>>> support. The current build system significantly complicates >>>>> developing projects like Storm on Yarn in ways that maven would >>>>> not. I think there is also a lot to be said for a declarative >>>>> build language that actually constrains you to best practices >>>>> rather than encouraging everyone to roll everything from >>>>> scratch (and to Ted's point, usually get it wrong). >>>>> >>>>> +1 for maven. On Dec 20, 2013 4:27 PM, "Ted Dunning" >>>>> <[email protected]> wrote: >>>>> >>>>>> The difference between Maven and Leiningen in the Apache >>>>>> context hasn't even really come into view. When it comes to >>>>>> IP clearance, packaging >>>> in >>>>>> standard ways, signing and interfacing with Nexus, Maven is >>>>>> going to be worlds easier. It isn't so much about doing the >>>>>> things that most developers know and care about better, it is >>>>>> about doing the things >>>> that >>>>>> most developers don't care about, but which are *really* >>>>>> important to >>>> get >>>>>> right. Because few developers care, very few developers will >>>>>> get these things right. Maven helps with this in two ways. >>>>>> First, many Apache projects use maven so there is a tribal >>>>>> knowledge available to help >>>> out. >>>>>> Second, Maven incorporates community development into normal >>>>>> practice. This means that if one project makes project >>>>>> signing better, everybody wins. This community focus means >>>>>> that enough resources actually get >>>>> spent >>>>>> on the frictional parts of releasing code to make them much >>>>>> less >>>> painful. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Dec 20, 2013 at 12:29 PM, Brian O'Neill >>>>>> <[email protected] >>>>>>> wrote: >>>>>> >>>>>>> +1 for a switch to maven >>>>>>> >>>>>>> I¹m all for lowering the hurdles for other developers to >>>>>>> get >>>> involved. >>>>>>> >>>>>>> By eliminating the zeromq dependency and converting to >>>>>>> maven, we¹ll >>>>> lower >>>>>>> those barriers, and increase the base of people capable >>>>>>> of/willing to contribute. >>>>>>> >>>>>>> (the cost of submitting a small fix/enhancement right now >>>>>>> is too high >>>>> for >>>>>>> the casual java developer) >>>>>>> >>>>>>> -brian >>>>>>> >>>>>>> --- Brian O'Neill Chief Architect Health Market Science The >>>>>>> Science of Better Results 2700 Horizon Drive € King of >>>>>>> Prussia, PA € 19406 M: 215.588.6024 € @boneill42 >>>>>>> <http://www.twitter.com/boneill42> € >>>>>>> healthmarketscience.com >>>>>>> >>>>>>> This information transmitted in this email message is for >>>>>>> the >>>> intended >>>>>>> recipient only and may contain confidential and/or >>>>>>> privileged >>>> material. >>>>>> If >>>>>>> you received this email in error and are not the intended >>>>>>> recipient, >>>> or >>>>>>> the person responsible to deliver it to the intended >>>>>>> recipient, >>>> please >>>>>>> contact the sender at the email above and delete this email >>>>>>> and any attachments and destroy any copies thereof. Any >>>>>>> review, >>>> retransmission, >>>>>>> dissemination, copying or other use of, or taking any >>>>>>> action in >>>>> reliance >>>>>>> upon, this information by persons or entities other than >>>>>>> the intended recipient is strictly prohibited. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 12/20/13, 3:19 PM, "P. Taylor Goetz" <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> I was hoping not to have to ask this question, since it¹s >>>>>>>> likely to >>>>>> start >>>>>>>> a heated debate. But here goesŠ >>>>>>>> >>>>>>>> How would Storm developers feel about switching the build >>>>>>>> system >>>> from >>>>>>>> Leiningen to Maven? >>>>>>>> >>>>>>>> This has nothing to do with personal preference (I¹m fine >>>>>>>> with >>>>> either). >>>>>> I >>>>>>>> ask in the context of release management and integration >>>>>>>> with the >>>> ASF >>>>>>>> infrastructure. >>>>>>>> >>>>>>>> I know Leiningen is very concise (since it uses clojure) >>>>>>>> and Maven >>>> is >>>>>>>> often looked at as a ³mess of xml². And there are a lot >>>>>>>> of other differences that people feel passionate about. >>>>>>>> So I¹d like to put >>>>>> ³minor² >>>>>>>> differences aside for a minute and focus on a few points >>>>>>>> that are important from a release management >>>>>>>> perspective. >>>>>>>> >>>>>>>> >>>>>>>> 1. ASF infrastructure support >>>>>>>> >>>>>>>> This is probably the biggest factor. From what I can tell >>>>>>>> (I could >>>> be >>>>>>>> wrong) Storm is the first ASF project to use Clojure and >>>>>>>> Leiningen, >>>> so >>>>>> it >>>>>>>> is not well supported from an infrastructure perspective. >>>>>>>> For >>>> example, >>>>>>>> although there is a Leiningen plugin for Jenkins, it¹s >>>>>>>> not installed >>>>> on >>>>>>>> builds.apache.org, so we¹d have to ask INFRA to install >>>>>>>> it which >>>>> could >>>>>>>> take a long time. To work around that, the build would >>>>>>>> have to do a temporary install of Leiningen with each >>>>>>>> build. We¹d probably have >>>> to >>>>>> add >>>>>>>> a bunch of support scripts as well to do things like >>>>>>>> detect test failures, etc. >>>>>>>> >>>>>>>> Maven on the other hand is pretty much a first class >>>>>>>> citizen in >>>> terms >>>>> of >>>>>>>> ASF infrastructure, and using Maven makes it easy to >>>>>>>> build/sign >>>>>> releases, >>>>>>>> stage to Sonatype, etc. There are a wealth of plugins as >>>>>>>> well that integrate well with infra for such things as >>>>>>>> publishing docs, >>>> project >>>>>>>> websites, etc. >>>>>>>> >>>>>>>> 2. Developer productivity One thing lot of people seem to >>>>>>>> like about Lieningen is the ability >>>> to >>>>>>>> quickly bring up a REPL and start hacking away. For this >>>> experiment, I >>>>>>>> used to the clojure maven plugin >>>>>>>> (https://github.com/talios/clojure-maven-plugin) and >>>>>>>> found it (for >>>>> me) >>>>>> to >>>>>>>> be on par with Leiningen. To bring up a REPL you just >>>>>>>> type: >>>>>>>> >>>>>>>> `mvn clojure:repl` >>>>>>>> >>>>>>>> >>>>>>>> To do a comparison, I put together a quick and dirty >>>>>>>> experimental >>>>> branch >>>>>>>> with Leiningen replaced with Maven: >>>>>>>> >>>>>>>> https://github.com/ptgoetz/incubator-storm/tree/maven-test >>>>>>>> >>>>>>>> >>>>>>>> >> I¹d encourage anyone to check it out play around to see what >>>>> developing >>>>>>>> Storm with Maven would be like. >>>>>>>> >>>>>>>> >>>>>>>> I¹d like to hear opinions from other committers and >>>>>>>> developers. If switching to Maven is something we want to >>>>>>>> do, I¹ll volunteer to do >>>>> the >>>>>>>> work. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Taylor >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>>> -- Supun Kamburugamuva Member, Apache Software Foundation; >>>> http://www.apache.org E-mail: [email protected]; Mobile: +1 812 >>>> 369 6762 Blog: http://supunk.blogspot.com >>>> >>> >>> >>> >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG/MacGPG2 v2.0.22 (Darwin) >> Comment: GPGTools - http://gpgtools.org >> >> iF4EAREIAAYFAlK4XyAACgkQBJGnfYOuu33lwAD9Ga8Ol8luiU8y9TTCj0KtPGtt >> URyr7y23RW4bH5tkXOIBALpNokRDJObyOB5v1+eRPFMx21KkzHQ8nnXbJLCt80VH >> =3dmy >> -----END PGP SIGNATURE-----
signature.asc
Description: Message signed with OpenPGP using GPGMail
