【问题标题】:Scala Play project fails build after adding swagger-play2 dependency - sbt cannot find play?添加 swagger-play2 依赖项后,Scala Play 项目构建失败 - sbt 找不到播放?
【发布时间】:2014-02-17 03:44:35
【问题描述】:

我创建了一个sandbox play project 用于测试。在Travis CI 上是building and passing the tests。我添加了对swagger-play2 的依赖,它开始通过错误消息使测试失败:

sbt.ResolveException: download failed: com.typesafe.play#play_2.10;2.2.1!play_2.10.jar(src)

重现步骤:

  1. 创建default play scala project
  2. Build passes 在添加招摇之前
  3. Adding swaggerbuild.sbt
  4. 立即构建fails :(
  5. Remove swagger 依赖
  6. 现在再次构建passes

添加对 swagger 的依赖会触发此构建失败似乎很奇怪。我究竟做错了什么?如果您想测试您的修复程序,请随时在github project 上发送拉取请求((Travis 应该自动构建您的拉取请求)。

完整的 GitHub 项目历史:https://github.com/pathikrit/play-test/commits/master

完整的 Travis-CI 构建历史记录:https://travis-ci.org/pathikrit/play-test/builds

触发构建失败的提交:https://github.com/pathikrit/play-test/commit/d8ad88083b56dd0269eaefc30025a42f54f0dba5

【问题讨论】:

  • 我无法在我的个人 Macbook 上重现此内容。要么是因为我安装 play 的方式不同(brew install play vs Travis's manual script 要么是因为本地 ivy/m2/play 缓存?如何完全删除所有本地 play jar 缓存以便我可以强制重新安装?还有什么其他原因会导致这个错误只出现在 Travis 而不是本地?

标签: scala sbt playframework-2.2 travis-ci swagger


【解决方案1】:

我想 Typesafe 存储库丢失了。

检查您的项目/plugins.sbt,通常它包含 sbt-plugin 包含和所需的类型安全 repo 解析:

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

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1")

【讨论】:

  • 不,我在我的project/plugins.sbt 中有这个 - 请看一下here
【解决方案2】:

我现在有一个脚本来设置依赖项:

PLAY_VERSION=2.2.1
wget http://downloads.typesafe.com/play/${PLAY_VERSION}/play-${PLAY_VERSION}.zip
      unzip play-${PLAY_VERSION}.zip -d ${HOME}
      # Manually populate the play directory with missing jars - TODO: remove this hack (see http://stackoverflow.com/questions/21361621/)
      SCALA_VERSION=2.10
      MAVEN_PLAY=http://repo.typesafe.com/typesafe/maven-releases/com/typesafe/play/play_${SCALA_VERSION}/${PLAY_VERSION}/play_${SCALA_VERSION}-${PLAY_VERSION}
      LOCAL_REPO=${HOME}/play-${PLAY_VERSION}/repository/local/com.typesafe.play/play_${SCALA_VERSION}/${PLAY_VERSION}
      mkdir ${LOCAL_REPO}/srcs/ ${LOCAL_REPO}/poms/
      wget ${MAVEN_PLAY}.pom --output-document ${LOCAL_REPO}/poms/play_${SCALA_VERSION}.pom
      wget ${MAVEN_PLAY}-sources.jar --output-document ${LOCAL_REPO}/srcs/play_${SCALA_VERSION}-sources.jar
      wget ${MAVEN_PLAY}-test-sources.jar --output-document ${LOCAL_REPO}/srcs/play_${SCALA_VERSION}-test-sources.jar

【讨论】:

    【解决方案3】:

    请更新您的依赖项以使用 swagger-play2-1.3.3:

    "com.wordnik" %% "swagger-play2" % "1.3.3"
    

    【讨论】:

      【解决方案4】:

      我修改了 manually downloading all the jars in my travis build script 的构建。但是,我怀疑这是真正的解决方案 - 似乎添加 swagger-play2 假定某些 jars 位于特定目录中,并且永远不会解析到其他任何地方......

      【讨论】:

        【解决方案5】:

        Swagger 1.3.1 适用于我的 Play 2.2.1。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-28
          • 2020-05-14
          • 2017-11-07
          • 1970-01-01
          • 1970-01-01
          • 2015-03-30
          • 2016-07-11
          • 2023-04-10
          相关资源
          最近更新 更多