News for hackers. Stuff that matters.
Re:An Opinionated Guide to Modern Java Development, Part 1 by eeperson on Thursday May 01, 2014 @03:13PM (#7682064)
The performance problems are definitely the most annoying part of using Gradle. The Gradle daemon helped a little but tended to break other things and Gradle was still pretty slow.

If you are looking for something faster and more declarative, you may want to check out SBT[0]. It is way faster than any of the other JVM build tools. Also, in the future[1] it should have much better tooling support than anything else on the JVM.

[0] - http://www.scala-sbt.org/ [1] - https://github.com/sbt/sbt/wiki/Client-server-split

Re:An Opinionated Guide to Modern Java Development, Part 1 by lomnakkus on Thursday May 01, 2014 @04:16PM (#7682467)
Right now, SBT + IDEA is a bit of a pain because they share the same target folder and IDEA sometimes overwrites/deletes .class files that your application (started via sbt run) hasn't loaded yet. Usually that leads to a few ClassDefNotFound errors and such. Hopefully that'll go away once we have a single SBT instance.

My two wishes for SBT would be: 1) A monadic style for .scala build files. It would make dealing with the immutable bits of project definitions so much more pleasant and we could avoid the weird semi-Scala syntax of .sbt files. And 2) A bottom-up approach similar to Pants. My team frequently end up getting a lot more project interdependencies than we bargain for simply because it's too easy to induce transitive dependencies.

Re:An Opinionated Guide to Modern Java Development, Part 1 by eeperson on Thursday May 01, 2014 @06:11PM (#7682986)
Would you mind elaborating on what you mean by a monadic style for .scala build files?

PS - You may already know this, but you can change IntelliJ's compile output directory [0].

[0] - http://www.jetbrains.com/idea/webhelp/configuring-module-com...

Re:An Opinionated Guide to Modern Java Development, Part 1 by lomnakkus on Thursday May 01, 2014 @06:31PM (#7683063)
Thank you, I haven't actually tried that. I really live the "I just want my IDE to work" philosophy (out of laziness), so I try to avoid configuration if I can. :)

About monadic style: I realize that it's a hard sell, but it's basically about leveraging for comprehensions (aka. do-notation) to specify your build. Shake is an example of this, although probably not particularly suited to building Scala code.

Re:An Opinionated Guide to Modern Java Development, Part 1 by eeperson on Thursday May 01, 2014 @06:45PM (#7683116)
Shake?
Re:An Opinionated Guide to Modern Java Development, Part 1 by lomnakkus on Saturday May 03, 2014 @12:08PM (#7691256)
Sorry, should've linked[1]. There's also a further link from there to a paper for your reading pleasure :).

[1] http://hackage.haskell.org/package/shake

Re:An Opinionated Guide to Modern Java Development, Part 1 by eeperson on Sunday May 04, 2014 @12:47PM (#7694855)
Thanks!
Re:An Opinionated Guide to Modern Java Development, Part 1 by EdwardDiego on Thursday May 01, 2014 @03:39PM (#7682228)
SBT has a terrible habit of breaking backwards compatibility, which has put me off it.
Re:An Opinionated Guide to Modern Java Development, Part 1 by eeperson on Thursday May 01, 2014 @03:55PM (#7682331)
I've never had to change anything between upgrades (aside from changing deprecated stuff). Are you referring to the jump between from 0.7 to 0.10 a few years ago or have you had more recent issues?
Re:An Opinionated Guide to Modern Java Development, Part 1 by EdwardDiego on Thursday May 01, 2014 @06:28PM (#7683050)
Yeah, I just went and had a look at the project in question and I'm being unfair to SBT, it was a plugin I use to package WARs that changed underneath me. The plugin was quite closely coupled to the version of SBT, but the latest variant of it (once I found out about the migration to a different artefact) seems good.