1

2.04 から 2.1 への移行時に、dist タスクから Artifactory に zip ファイルを送信するパブリッシュ タスクで問題が発生しました。

今、私たちが得ているのは次のエラーです:

Internal task engine error: nothing running.  This usually indicates a cycle in tasks.

これについては、play フレームワークのユーザー グループで議論されています。

https://github.com/playframework/Play20/pull/535

https://groups.google.com/forum/#!topic/play-framework/BoWw65F6vg8

私たちは基本的に彼らが推奨することをやろうとしましたが、どこにも行きません. Build.scala の例を教えてください。

私たちが持っているものは次のとおりです。

  /*
    In order to solve the cycle generated during the dist task in play 2.1
  */
  val distHack = TaskKey[File]("dist-hack", "Hack to publish dist")

  val myDistSettings = Seq[Setting[_]] (
      publish <<= (publish) dependsOn play.Project.dist,
      publishLocal <<= (publishLocal) dependsOn play.Project.dist,
      artifact in distHack ~= { (art: Artifact) =>
        art.copy(`type` = "zip", extension = "zip")
      },
      distHack <<= (distDirectory, version) map { (d, v) =>
        val packageName = "%s-%s" format(appName, v)
        println(packageName)
        val zip = d / (packageName + ".zip")
        zip
      }
    ) ++ Seq(addArtifact(artifact in distHack, distHack).settings: _*)

    lazy val main = play.Project(appName, appVersion, appDependencies)
        ...
    .settings(addArtifact(Artifact(appName, "zip","zip"), dist).settings : _*)
            ...
    .settings(
        // disable publishing the main jar produced by `package`
        publishArtifact in (Compile, packageBin) := false,

        // disable publishing the main API jar
        publishArtifact in (Compile, packageDoc) := true,

        // disable publishing the main sources jar
        publishArtifact in (Compile, packageSrc) := false,
        publishArtifact in Test := false,
        crossPaths := false, 
        publishTo := Some("Artifactory Realm" at "somewhere"),
        credentials += Credentials(".credentials"),
        scalacOptions ++= Seq("-feature")
    )
    .settings(myDistSettings: _*)
4

1 に答える 1

2

問題は、 dist タスクと publish タスクがサイクルのどこにあるかということでした。したがって、発行タスクをdistHackに依存させるだけで済みました。つまり、これを次のように置き換えました。

.settings(addArtifact(Artifact(appName, "zip","zip"), dist).settings : _*)

.settings(addArtifact(Artifact(appName, "zip","zip"), distHack).settings : _*)

また、別の問題もありました。メインの app.jar が dist に含まれていませんでした。そのため、2.0.4 でパッケージ化されたバイナリの公開を妨げていた行をコメントする必要がありました。

//publishArtifact in (Compile, packageBin) := false,
于 2013-07-04T21:24:32.760 に答える