11

Scala 2.10.1 が間もなくリリースされるので、現在公開しているアーティファクトがそのバージョンの scala-library.jar で自動的に動作するようにしたいと考えています。私は sbt 0.12.2 を使用して公開し、設定は

scalaVersion := "2.10.0"

バイナリ互換バージョンをアーティファクトに正しく添付します。

<artifactId>mylibrary_2.10</artifactId>

...しかし、scala ライブラリの依存関係にはまだ 2.10.0 と書かれています:

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

それは正しくないと思います。ここでは 2.10 または 2.10.+ を使用する必要がありますか?


私も追加しようとしましscalaBinaryVersion := "2.10"たが、何も変わらないようです。

私が持っていた別のアイデアは、 を使用することでしたscalaVersion := "2.10.+"。Sbt は で永遠にかかりますがGetting Scala 2.10.+ ...、最終的には問題なく動作しpom、scala-library.jar 用にこのバージョンになりました。だから多分これは正しい方法ですか?

4

2 に答える 2

1

2.10.x は、マイナー バージョン間でバイナリ互換性があることを意図しているため、2.10.x を使用することをお勧めします (リリース ノートに記載されています)。

crossScalaVersions一般に、 sbtの設定を使用して、任意のバージョンの Scala のアーティファクトを生成できます。

build.sbt

name := "so-14803362"

scalaVersion := "2.10.0"

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

上記の構成では、+sbt コマンドの先頭に a を追加して、Scala バージョンごとに実行できます。

> + publish

これにより、プロジェクトのアーティファクトがビルドされ、 にリストされている各 Scala バージョンで公開されcrossScalaVersionsます。

詳細については、sbt のドキュメントを参照してください。

于 2013-06-24T20:17:38.230 に答える
0

「ファットJAR」を生成している場合、直接の依存関係も指定されているため、すべてが直接の依存関係のバージョンによって決定されると思います(間違っている場合は修正してください)。もちろん、これはあなたが望む以外のScalaライブラリのバージョンに依存するいくつかのコンポーネントからあなたを保証するものではありません.いくつかのライブラリの異なるバージョンに依存するコンポーネントからあなたを保証するものではありません.いくつかの Scala ライブラリ バージョンを使用し、十分にテストされているため、これが変更されるまでは問題ありません。

しかし、同じ日に同期されていない他のコンポーネントもある可能性があるため、次の Scala ライブラリですべてがうまくいくとは限りませんよね? そして、はい、Scala ライブラリのバージョンは、使用される Scala コンパイラのバージョンと一致する必要があります。

于 2013-04-19T21:29:35.343 に答える