travis-ci/travis-cookbooks — pull request #22 by gildegoma (2011-12-11 00:12:16+00:00)
Title: [sbt] Upgrade to version 0.11.2

In order to implement first-class support of Scala projects, a first requirement consists in upgrading to sbt 0.11.x. The advantages of this major version are following:

* Tend to large adoption: standard version for new and active Scala projects (0.11.2 is the standard version on TypeSafe Stack)
* New very interesting features: like cross-build and the ['++' parameter](https://github.com/harrah/xsbt/wiki/Cross-Build), that allows to control which Scala version is used for the build. This function is planned to be used in travis-build to easily implement the version switch (cross-version matrix)
* https://github.com/typesafehub/sbt-multi-jvm requires sbt 0.11. This project may help us if we want to implement cross-JVM matrix (proof of concept not started yet)

Please review my request and guide me to make it acceptable, if needed. For example, I'm not sure about the cookbook versioning guidelines (see my code comments).

**Critics on this pull request:**

Following KISS principle, I manually built the .deb package, a very similar way as sbt-0.10.1.deb package was. But such package presents IMHO a big problem with Travis VM-Snapshot strategy: **sbt always needs to download all the required dependencies (like Scala libraries) on the first run**.
Consequence: lot of network bandwidth and time are spent for each Travis build, since VM snapshot won't keep such data (see for instance http://travis-ci.org/#!/gildegoma/salat/builds/370564).

**Improvement Proposal**

In a second step (if this PR is accepted and working ;-), I'll propose to smart bundle all these dependencies directly into the .deb package. This way, online dependencies will be directly available and the build will go lot faster. Below an example of the disk usage of each Scala version cached by sbt:

```
14M	boot/scala-2.8.0
15M	boot/scala-2.8.1
15M	boot/scala-2.8.2
20M	boot/scala-2.9.0
20M	boot/scala-2.9.0-1
41M	boot/scala-2.9.1
```