Gradle is also gaining a lot of popularity, and has a good deal of Scala support. I don't know if it has incremental compilation. The maven scala plugin at one time had incremental compilation, I don't know what state that is in now.
I'm giving learning enough SBT a shot right now to clean the current mess up, and will submit a patch as part of Kafka-854. Having KAFKA-826 committed would help. On 4/8/13 1:31 PM, "David Arthur" <mum...@gmail.com> wrote: >Targeting multiple Scala versions is easy with Ant/Ivy and I believe is >possible in Maven. Incremental compilation is available through some IDEs: > >Eclipse has a plugin from Typesafe that does incremental build: >http://typesafe.com/technology/scala-ide >Intellij supports it by using SBT: >http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/ > >Lowly vim users like myself would have to suffer longer compile times > >-David > >On 4/8/13 4:20 PM, Jay Kreps wrote: >> I think the biggest problem is that there isn't clear ownership of the >> build stuff we have. SBT is probably fine if you know it well. Ant and >> maven are probably the same. The problem is that none of the >> committers seem to know SBT well that that is a big barrier for >> getting basic stuff like a good unit test report, etc. >> >> My personal preference would be for Maven followed by Ant followed by >> anything else (including SBT), but I think the ownership maintenance >> issue is more important than the framework. >> >> The two useful things that SBT bought us where compile targets (i.e. >> scala 2.8 vs 2.9) and incremental compilation. I think both are >> available outside sbt now...? >> >> -Jay >> >> >> On Mon, Apr 8, 2013 at 12:52 PM, David Arthur <mum...@gmail.com> wrote: >>> Ant and Ivy also bring in lots of free stuff as well as the >>>flexibility to >>> do non-standard things >>> >>> It seems that SBT is a moving target (as is Scala itself, being such a >>>new >>> tech), and keeping up with SBT changes and people's plugins hosted on >>>GitHub >>> sounds like a pain. Maven and Ant/Ivy are mature and stable and well >>> understood. >>> >>> Without digressing too much into a Maven/Ant+Ivy/SBT debate, it is >>>clear >>> that there are issues with the current build. I'm proposing Ant+Ivy, if >>> enough people buy into this - great we'll use Ant. If not, also great >>>- I'm >>> simply forcing the dialog :) >>> >>> Also, if what I'm proposing is accepted, I would be willing to >>>maintain this >>> piece of the project in the longer term. >>> >>> -David >>> >>> >>> On 4/8/13 3:40 PM, Scott Carey wrote: >>>> My first reaction to looking at the current build was that I could do >>>>a >>>> lot better with Maven and I'd get a lot of free stuff with that >>>> (dependency:tree, versions:display-dependency-updates), except that >>>>cross >>>> scala versions would be uglier. Modularization is trivial with maven >>>>(the >>>> stuff outside core). >>>> >>>> A little more digging, and it seems that the current sbt build could >>>>be >>>> significantly simplified and has a lot of cruft. >>>> >>>> >>>> On 4/5/13 12:55 PM, "David Arthur" <mum...@gmail.com> wrote: >>>> >>>>> After getting frustrated with SBT, and being unable to figure out >>>>> seemingly simple problems like KAFKA-843, I decided to try something >>>>> completely different. >>>>> >>>>> I spent some time yesterday adapting some Ant/Ivy boilerplate I use >>>>>for >>>>> projects to Kafka. It was actually pretty easy to get working (Kafka >>>>>is >>>>> a very simple build), and I think it's _much_ cleaner than the >>>>>existing >>>>> SBT stuff. >>>>> >>>>> Attached is a patchset of the work I did. N.B., this is totally >>>>> experimental and only considers the "core" part of the project. >>>>> >>>>> At this point I can: >>>>> >>>>> * Resolve all deps through Ivy (except yammer.metrics which is >>>>>checked >>>>> in) >>>>> * Resolve different versions of Scala through Ivy (i.e., cross >>>>> compile-ability) >>>>> * Compile the source >>>>> * Run all the unit tests (all passing) >>>>> * Compile a jar >>>>> * Package a tarball of the libs, conf, and bin scripts >>>>> >>>>> Since all the libraries are localized to the project (and not in >>>>> ~/.ivy2), the packaging is trivial. Also, the bin scripts could be >>>>> cleaned up significantly (which they need to be IMO). >>>>> >>>>> I would love to hear what everyone thinks of this. Am I crazy? Is SBT >>>>> really better? Convince me! >>>>> >>>>> -David >>>>> >>>>> >>>>> >