scala-library.jar version in sbt published artifacts

As Scala 2.10.1 is coming out soon, I believe, I want to make sure that artifacts I publish now will automatically work with a scala-library.jar of that version. I use sbt 0.12.2 to publish, and with a setting of

scalaVersion := "2.10.0"

I get correctly attached the binary compatible version to my artifact, e.g.

<artifactId>mylibrary_2.10</artifactId>

…but the scala library dependency still says 2.10.0:

     <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.10.0</version> <!-- !!! -->
    </dependency>

I suppose that is not correct, and it should use 2.10 or 2.10.+ here?

I also tried to add scalaBinaryVersion := “2.10” but that doesn’t seem to change anything.

Another idea I had was to use scalaVersion := “2.10.+”. Sbt takes forever with Getting Scala 2.10.+ …, but it finally goes on fine and the pom has this version now for scala-library.jar. So maybe this is the correct way?

How do you remove the _ postfix from artifacts built+published with simple-build-tool?

I’m building a few Java-only projects using simple-build-tool. When I publish the artifacts from the projects using, say, sbt publish-local then the resulting artifacts have the Scala version appended

Maven SBT dependency artifacts?

I manage my project using Maven and SBT at same time. The reasons for this are: Intellij IDEA cannot import SBT project.(idea-sbt plugin doesn’t work very well) I don’t know how can get sources and

Heroku supported SBT version

Heroku documentation states SBT v0.12.3 is supported. I set my project/build.properties to sbt.version=0.12.3 and push, but Heroku responds with Error, SBT version 0.12.3 not supported. Which versio

Rewriting sbt artifacts with a regex matcher to strip version information

RegEx guru wanted: I want to strip library names in packaging an sbt project. Namely if my dependency is called val in = scala-swing-2.9.0-1.jar I want to re-write the name as scala-swing.jar E.

How to check sbt version?

How do I check which version of sbt I’m running? I have the bash file set up that uses sbt-launch.jar, and it works, but $ sbt version only shows the project version (0.1) and $ sbt –version do

Gradle: retrieve only one of multiple published artifacts?

I’ve got an Ivy repository with multiple published artifacts, something like this: /mygroup/mymodule/1.1.1/mymodule-1.1.1.jar /mygroup/mymodule/1.1.1/mymodule-client-1.1.1.jar /mygroup/mymodule/1.1.1/

How to tell SBT to resolve managed artifacts

Is there a command in the SBT console that forces it to resolve artifacts (especially, re-resolve SNAPSHOT dependencies)? The only way I know of now is to run clean and then compile (or start), but th

sbt updates without adding io.spray artifacts

I have a sbt project that was working fine but after a reload stopped loading the artifacts. An update resolves the dependencies properly but for some reasons now doesn’t include the libraries in the

Start TeamCity build when artifacts are published

Let’s say I have one TeamCity build configuration depending on artifacts taken from another. It is possible to publish artifacts while build is in progress in TeamCity. My question is: is it possible

Get the published application version

My file version in my publish is displaying differently when my application executes. I’m a tad confused on this because as you can see below, my application is published as 1.0.0.2 and soon to be 1.0

Answers

I think if you are generating ‘fat JAR’ everything is determined by the versions of direct dependencies (correct me if I’m wrong) because their direct dependencies are specified too and so forth. Of course this does not guarantee you from some components that depend on Scala library version other than you’d like, you are not guaranteed from components that depends on different versions of some lib and of course Scala is in active development phase but if you stick with some Scala library version and tested well, until this changes you are OK.

But you cannot guarantee everything will be good on next Scala library because you also have other components that probably are not synchronized the same day, right? And, yes, version of Scala library should match version of Scala compiler used.

You should be good to go for 2.10.x, since it is meant to be binary compatible between minor versions (as documented in the release notes).

In general, you can generate artifacts for arbitrary versions of Scala using the crossScalaVersions setting in sbt.

build.sbt

name := "so-14803362"

scalaVersion := "2.10.0"

crossScalaVersions := Seq("2.10.0", "2.10.1", "2.10.2")

With the above configuration, you can prepend a + to sbt commands to run them for each Scala version:

> + publish

This will build and publish your project’s artifacts with each Scala version listed in crossScalaVersions.

See the sbt docs for more info.