我最近设置了一个Artifactory来保护我们的项目免受jar感染,我的Play scala项目现在遇到了一些解决依赖关系的问题。
我的~/.sbt/repositories
文件:
[repositories]
local
artifactory-ivy: https://build-server/artifactory/repos-ivy, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
artifactory-ivy-sbt: https://build-server/artifactory/repos-ivy, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
artifactory-maven: https://build-server/artifactory/repo
和我的~/.sbtconfig
文件:
SBT_OPTS="-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=256M -XX:MaxPermSize=512M -Dsbt.override.build.repos=true"
使用这些设置SBT解决了大多数使用神器的依赖项,除了那些捆绑在Plays本地仓库中的东西(他们将${ivy.home}
属性更改为设置为repo,它们捆绑在安装zip文件中。
除非SBT现在无法解决play_2.10-test-sources.jar
,play_2.10-sources.jar
和play_2.10.pom
,否则会显示以下错误消息:
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: FAILED DOWNLOADS ::
[warn] :: ^ see resolution messages for details ^ ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: com.typesafe.play#play_2.10;2.2.0!play_2.10.jar(src)
[warn] :: com.typesafe.play#play_2.10;2.2.0!play_2.10.jar(src)
[warn] :: com.typesafe.play#play_2.10;2.2.0!play_2.10.pom
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
当我看到常春藤伐木时,我发现常春藤试图寻找这些罐子的唯一地方,而pom在当地:
[warn] [NOT FOUND ] com.typesafe.play#play_2.10;2.2.0!play_2.10.jar(src) (0ms)
[warn] ==== local: tried
[warn] /Users/michael/Projects/gds/ier/frontend/scripts/bin/play-2.2.0/repository/local/com.typesafe.play/play_2.10/2.2.0/srcs/play_2.10-test-sources.jar
[warn] [NOT FOUND ] com.typesafe.play#play_2.10;2.2.0!play_2.10.jar(src) (1ms)
[warn] ==== local: tried
[warn] /Users/michael/Projects/gds/ier/frontend/scripts/bin/play-2.2.0/repository/local/com.typesafe.play/play_2.10/2.2.0/srcs/play_2.10-sources.jar
[warn] [NOT FOUND ] com.typesafe.play#play_2.10;2.2.0!play_2.10.pom (0ms)
[warn] ==== local: tried
[warn] /Users/michael/Projects/gds/ier/frontend/scripts/bin/play-2.2.0/repository/local/com.typesafe.play/play_2.10/2.2.0/poms/play_2.10.pom
我试图用一个新项目进行复制,但我似乎无法解决同样的问题。我真的不确定为什么Play正在寻找这些文件,因为它有play_2.10.jar
并且应该没有其余的工作。
答案 0 :(得分:0)
首先,尝试将repositories
文件放在~/.sbt/0.13
目录中。从0.13开始,sbt期望在由版本命名的子目录中查找文件。
如果这不起作用,请尝试通过将repositories
文件添加到SBT_OPTS
来明确指定{/ 1}}文件:
-Dsbt.repository.config="~/.sbt/0.13/repositories"
我必须为我的构建设置此属性,以便在使用我们自己的repo时找到插件。由于Play是一个插件,它可能会遇到同样的问题。我的唯一区别是我没有尝试将repositories
文件放在~/.sbt/0.13
中。我把它放在$sbt_home/conf
中并添加了上述属性。