score:34
Points 2 and 4 are extremely difficult to manage with the current scalac. The problem is that Scala's compiler is a little dumb about building files. Basically, it will build whatever you feed it, regardless of whether or not that file really needs to be built. Scala 2.8.0 will have some tremendous improvements in this respect, but until then... Eclipse SDT actually has some very elaborate (and very hackish) code for doing change detection and dependency tracking. On the whole, it does a decent job, but as you have seen, there are wrinkles. Eclipse SDT 2.8.0 will rely on the aforementioned improvements to scalac itself.
So, building only modified files is pretty much out of the question. Aside from SDT, the only tool I know of which even tries this is SBT (Simple Build Tool). It uses a compiler plugin to track files as they are compiled and query the dependency graph computed by the compiler itself. In practice, this yields about a 50% improvement over the recompile-the-world approach. Once again, this is a hack to get around deficiencies in pre-2.8.0 scalac.
The good news is that reasonably fast compilation is still achievable even without worrying about change detection. FSC uses the same technology (ooh, that sounded so "Charlie Eppes") that Eclipse SDT uses to implement fast incremental compilation. In short, it's pretty snappy.
Personally, I use Apache Buildr. Its configuration is significantly cleaner than either Maven's or SBT's and its startup time is orders of magnitude less (when running under MRI). It integrates with FSC and attempts to do some basic change detection on its own (fairly primitive). It also has auto-magical support for the major Scala test frameworks (ScalaTest, ScalaCheck and Specs) as well as support for joint compilation with Java sources and IDE meta generation for IntelliJ and Eclipse. Oh, and it supports all of Maven's features (dependency resolution, etc) and then some. I'm even working on an extension which would allow interactive shell support integrated with JavaRebel and supporting several shell providers (Scala, JIRB, Clojure REPL, etc). It's not ready for the SVN yet, but I'll commit once it's ready (possibly in time for 1.3.5).
As you can see, I'm very firmly of the opinion that Buildr is the best Scala build tool out there. Its documentation is a little spotty where Scala is concerned, but that's because everything is so straightforward that it's hard to document without feeling verbose. You can always check out one of my GitHub repositories for examples. Good luck!
score:1
The latest version of the Maven Scala plugin supports Zinc/Nailgun for faster start times and faster incremental builds. See Zinc and Incremental Compilation.
score:2
If you want to use Eclipse, but build the project using sbt, and still be able to debug, take a look at this post here:
zikaprog.wordpress.com/2010/04/19/scala-eclipse-sbt-and-debugging/
It also can be applied to builders other than sbt.
score:3
I went down the same road, and here is where I am at: - After some initial investigation, I dropped Kate. I love to use it for most things, but when it came to things like defining tab completions, I found it sorely lacking. I would recommend that you look into gedit instead, which is much more robust for Scala development - With gedit as my editor, I use SBT and have found it to be a great build tool. I can put it into a 'test' mode where when any code changes it recompiles the relevant files and runs my test suite. This has been an extremely effective way to work.
I have not taken a look at Buildr yet. I would like to say that I will, but honestly with SBT at my disposal I don't really have a compelling need to look at another build tool.
score:4
Am also quite frustrated with the scala plugin on Eclipse and I can add a few more problems to the list:
- auto-complete only works some of the time
- the debugger doesn't work properly (especially when trying to debug scala xml)
- the debugger forgets breakpoints
- 'go to definition' doesn't work more often than not.
I'm glad to hear that Buildr sounds like a better alternative (on the build front anyhow), I'll give that a try - thanks!
score:4
If you use Emacs, I think Ensime is a pretty good IDE. I think at the time writing, Ensime is the only IDE that will give you fast and accurate autocompletion on both Scala and Java objects, including implicit conversions.
There's code browsing support using Speedbar, code templates using the excellent Yasnippet, and code completion menu using Autocomplete. These are all very modern, actively maintained Emacs packages. There's also out of the box incremental building support for Maven and SBT.
There's a lot more in there such as interactive debugging, refactoring, and the Scala interpreter in an inferior process. All the things you want in a modern IDE for Scala is already there in Ensime. Highly recommended for Emacsens.
score:4
For the reasons of completeness, I have to say that there is also Pants -- the build tool that in use in Twitter (one of the early scala adopters)
The main difference it that it is intended not only for scala (and written in python, by the way) and is modeled after google build system.
It's not so bloated as sbt, so for the freshmans it's much simplier, but I've never heard about Pants usage outside of twitter and foursquare.
If you scared of SBT, maybe another no-so-popular build tool, ABT, could be an alternative for you?
score:6
Have you looked at Intellij IDEA and its Scala integration ? Intellij has a loyal (fanatical?) following amongst Java developers, so you may find this is appropriate for your needs.
Source: stackoverflow.com
Related Query
- What's the best Scala build system?
- Whats the best way to start using Mylyn?
- Is it possible to use the Gradle build system for Android with Eclipse?
- Strange disconnect between Eclipse CDT, included system headers, and the underlying C build
- Whats the best way to deploy a PHP (PDT) Eclipse Project to Apache? (on Ubuntu)
- What is the best way to integrate an external build tool into Eclipse?
- Scala IDE and Apache Spark -- different scala library version found in the build path
- More than one scala library found in the build path when fresh creating maven project in eclipse
- Whats the best way to bundle the whole project in Maven?
- Whats the best way to start building an application that should work on windows 8 tablet
- Eclipse > Remote System Plugins > Error : the resource is not on the build path of a script project
- Play framework 2.0, Eclipse Helios, Scala IDE 2.0 plugin - Getting build errors out of the box
- What is the best method to setup a new GAE project in Eclipse with Gradle Build
- Eclipse: How do you remove an unrelated file from the build system
- WARNING: The "Default" Configuration may not build because it uses the "Cygwin GCC" tool-chain that is unsupported on this system
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- What are the best JVM settings for Eclipse?
- What is the best IDE to develop Android apps in?
- The project cannot be built until the build path errors are resolved.
- Maven build failed: "Unable to locate the Javac Compiler in: jre or jdk issue"
- How to pass the -D System properties while testing on Eclipse?
- Is Eclipse the best IDE for Java?
- Eclipse: The resource is not on the build path of a Java project
- Eclipse "this compilation unit is not on the build path of a java project"
- The project was not built since its build path is incomplete
- Which is the best Maven Eclipse plugin?
- a cycle was detected in the build path of project yyy - build path problem
- This compilation unit is not on the build path of a Java project
- What is the use of Order And Export tab in Java Build Path
- unable to get system library for the project on eclipse ide
More Query from same tag
- Android get saved network SSID
- Deployment Error Weld-001408 with WLS12c and OEPE
- Tomcat in Eclipse not starting my webapp
- Cannot get python Turtle to work in Pydev on linux
- m2eclipse how make a webapp
- JAVA BOX SDK from Eclipse to Grails using GGTS
- JasperReport to add in jsp,JasperPrint can't resolve as type
- Fuzz testing in Eclipse? Rule based fuzzer in 'Run As..."
- How to retrieve the actual value of the "link with editor" button in eclipse
- EGit 4.1 Error during Eclipse Install
- Unable to launch the android emulator from Eclipse 3.7.0
- Problem checking out svn repo with subclipse
- how to embed the Eclipse CSS Editor inside Eclipse MultiPageEditor
- Configuring Mojarra 2.1.X on Eclipse Indigo
- Refactor "package structure" in Eclipse to relocate a package's child package to its parent package
- Eclipse Blocking Console View
- write eclipse junit plugin test
- Flash Builder deactivates breakpoints (sometimes)
- Eclipse unable to load project properly in android?
- Run individual cpp file each have main()
- Eclipse CDT with C running errors
- Two SVN Repository Perspectives in Eclipse
- Buildship: Unsupported class file major version 60
- maven dependency problem when jenkins builds the project
- Eclipse Android project Compile with 4.0.3 not loading
- Is it necessary to sign every blackberry application even if i have to just test it on blackberry real device?
- Building Eclipse BIRT from Source (Oxygen/4.7.0 Release)
- Eclipse: add javadoc
- Eclipse indigo workspace is empty even after switching the workspace to the old one. How to import all of my old projects?
- Eclipse do not show my custom attributes (attrs.xml)