I was about to commit a new version of a library of mine via Sonatype,
but luckily double checked the POM. Something very odd is happening
which must be related to a switch from sbt 0.13.1 to "bugfix only
version" 0.13.2:
https://oss.sonatype.org/service/local/repositories/desciss-1139/content/de/sciss/scalaaudiofile_2.10/1.4.2/scalaaudiofile_2.10-1.4.2.pom
The entry in question is this
<dependency>
<groupId>de.sciss</groupId>
<artifactId>serial_2.10</artifactId>
<version>[1.0, 1.1)</version>
</dependency>
which was produced by
"de.sciss" %% "serial" % "1.0.2+"
which until now meant, "version 1.0.2 or any higher minor version"
For comparison, here is another POM released with a recent sbt version:
http://search.maven.org/remotecontent?filepath=de/sciss/scalacollider_2.10/1.11.1/scalacollider_2.10-1.11.1.pom
Note entries:
<dependency>
<groupId>de.sciss</groupId>
<artifactId>scalaosc_2.10</artifactId>
<version>1.1.2+</version>
</dependency>
<dependency>
<groupId>de.sciss</groupId>
<artifactId>scalaaudiofile_2.10</artifactId>
<version>1.4.1+</version>
</dependency>
<dependency>
<groupId>de.sciss</groupId>
<artifactId>processor_2.10</artifactId>
<version>0.2.+</version>
</dependency>
<dependency>
<groupId>de.sciss</groupId>
<artifactId>scalacolliderugens-core_2.10</artifactId>
<version>1.8.+</version>
</dependency>
The correct semantics are preserved.
So sbt 0.13.2 seems to silently drop support for specifying the minimum
minor version? This is very bad IMO because now you can break code when
for example version 1.0.0 is used instead of 1.0.2 and 1.0.2 added a
class or a member to a singleton object, something that is binary
compatible and forward compatible.
Should I revert to sbt 0.13.1?
Best, .h.h.