Back to the original question... I have used SBT. I love my experience with Scala, but am frustrated with the whole Scala tool ecosystem right now. I wasted way too much time finding a reasonable combination of build tool/test framework/IDE that kind of works. But, along the way I tried out SBT and like it. I was able to configure it quickly from an existing Maven project, and really liked being able to learn it quickly and work quickly. Now, I pretty much just edit with my IDE, and don't worry so much when it looses its brain. I handle the build with SBT.
Once you start SBT, when you precede a command with "~" it makes it watch for changes, so when I save files from the IDE, it builds automatically based on the changed files. I switch windows to see results. Here is a typical work flow. ~test will compile all and run tests, then watch for changes. Lets say I change stuff and tests start failing, I cut the name of the failing test out, stop the auto command by hitting any key and then start ~test-only com.bla.BrokenTest This only runs the broken test until I fix it. If I make big bad changes I may even fall back to ~compile or ~test-compile and then work back up the layers until ~test is running all tests again. I have really enjoyed how easily I can control the scope of my build. I suspect that other build systems can do things like this, but for me the point was that I couldn't figure out how in a reasonable amount of time, but it seemed fairly easy with SBT. I know that there are other hot-swapping tools that enable even faster work flow, but I don't need the grief of configuring even more stuff. This seems pretty good to me. I would rather not have to switch between IDE and console window, but I don't know how to get the IDE to be smart about what it builds, reliably interact with Scala test frameworks, or to work well with SBT. Hopefully this will all come together some day :) (I have used both Netbeans and Eclipse and I don't really think either does well yet, but I hear that work is being done on Eclipse for the next version of Scala. I look forward to any improvement.) SBT does use Scala as its configuration, which is quite succinct and fairly easy to understand, but can be a barrier to some people. It can build Java projects just as easily as Scala. As I understand it is using Ivy. It differs from Maven in that it makes local copies of all of your dependencies for each build setup. You actually issue a command to tell it when you want it to go get everything. I did have trouble figuring out how to get it to retrieve things from my local maven repository, and haven't figured out if it will publish either. I hope this give a little insight into SBT -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
