5

ubuntu12 にhttp://typesafe.com/stack/downloadから typesafe-stack をインストールし、play プロジェクト (g8 typesafehub/play-scala) を作成しましたが、プロジェクトに scalatest または scalacheck を追加したいと考えています。

したがって、 my_app/project/plugins.sbt には次の行があります。

// The Typesafe repository 
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// Use the Play sbt plugin for Play projects
addSbtPlugin("play" % "sbt-plugin" % "2.0.1")

次に、addSbtPlugin を使用して scalatest を追加しました。

addSbtPlugin("org.scalatest" %% "scalatest" % "2.0.M1" % "test")

そして、「sbt test」を実行すると、次のメッセージで失敗します

[info] Resolving org.scalatest#scalatest;2.0.M1 ...
[warn]  module not found: org.scalatest#scalatest;2.0.M1
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== local: tried
[warn]   ~/.ivy2/local/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== Typesafe repository: tried
[warn]   http://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-    releases/org.scalatest/scalatest/scala_2.9.1/sbt_0.11.3/2.0.M1/ivys/ivy.xml
[warn] ==== public: tried
[warn]     http://repo1.maven.org/maven2/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom

私が理解していないこと: なぜこのhttp://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1_0.11.3/2.0.M1/scalatest-2.0.M1.pom URL を代わりに使用するのですか?本物のhttp://repo.typesafe.com/typesafe/releases/org/scalatest/scalatest_2.9.1/2.0.M1/scalatest_2.9.1-2.0.M1.pom ?

私が scalacheck で抱えている問題とまったく同じです。リポジトリには scala バージョン固有しかないのに、sbt バージョン固有の artifactId を使用してダウンロードしようとします。

私は何を間違っていますか?アーティファクト URL の一部として sbt-version を使用しないように、sbt のどこかにスイッチがなければならないことを理解していますか?

私も plugins.sbt でこれを使ってみました

libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"

しかし、sbt によって完全に無視され、scalatest.jar がクラスパスに表示されていないようです。

my_app/test/AppTest.scala:1: object scalatest is not a member of package org
[error] import org.scalatest.FunSuite

sbt clean && sbt test の出力には、 Resolving org.easytesting#fest-util;1.1.6 または別のライブラリがたくさんありますが、scalatest については何もないためです。

私は scala 2.9.1 と sbt 0.11.3 を使用し、scalatest 2.0.M1 と 1.8 を使用しようとしています。スカラチェック:

resolvers ++= Seq(
  "snapshots" at "http://oss.sonatype.org/content/repositories/snapshots",
  "releases"  at "http://oss.sonatype.org/content/repositories/releases"
)

libraryDependencies ++= Seq(
  "org.scalacheck" %% "scalacheck" % "1.9" % "test"
)

同じ結果、つまり、存在しない sbtVersion 固有の POM URL を使用します。

私は何を間違っていますか?ありがとう。

4

2 に答える 2

9

Scaltest はビルド プラグインではなく、テスト ライブラリです。次のように追加する必要があります。

libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M1" % "test"

ではなくbuild.sbt、プロジェクトのベースディレクトリ(「my_app」と呼ばれる)に追加する必要があります。project/plugins.sbt

0.11.3検索しようとする URL にある理由は、ビルド プラグインが使用している SBT のバージョンに関連付けられているためです。

于 2012-06-01T04:38:50.333 に答える
4

plugins.sbtファイルとは、sbtaddSbtPluginプラグインを追加するために使用されます。依存関係ではありません。

使用したテンプレートを使用して、に依存関係を追加する必要がありますproject/Build.scala。次のセクションがあります。

val appDependencies = Seq(
  // Add your project dependencies here,
)

次のように置き換えます。

val appDependencies = Seq(
  "org.scalacheck" %% "scalacheck" % "1.9" % "test",
  "org.scalatest" %% "scalatest" % "2.0.M1" % "test"
)

そしてそれは動作するはずです。

于 2012-06-01T04:43:01.493 に答える