我有一个使用sbt v0.13.11的Play Framework项目(v2.5.3)。我已经安装了最新版本的sbt 1.1.0(我需要安装旧版本吗?)。我还安装了最新版的Intellij 2017.3。我们正在使用企业nexus服务器来解决sbt依赖关系。
我的存储库文件设置如下:
[repositories]
local
my-ivy-proxy-releases:http://nexus.xxx.com:8081/nexus/repository/ivy-releases/[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
my-maven-proxy-releases:http://nexus.xxx.com:8081/nexus/repository/mvn-repositories/
我设置了一个环境变量:
SBT_OPTS = -Dsbt.override.build.repos = true
当我在Intellij中加载项目时,sbt刷新卡住了从sbt-uglify插件中解析依赖项。我知道这是sbt-uglify,因为我评论了所有的插件,以找出问题所在。
plugins.sbt:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.9")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2")
addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "2.0.0")
以下是我在Intellij中收到的错误/警告:
[info] Resolving org.webjars.npm#right-align;[0.1.1,0.2) ...
[error] Server access Error: Connection timed out: connect
url=https://repo.typesafe.com/typesafe/ivy-releases/org.webjars.npm/right-align/
[error] Server access Error: Connection timed out: connect
url=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.webjars.npm/right-align/
[error] Server access Error: Connection timed out: connect
url=https://repo1.maven.org/maven2/org/webjars/npm/right-align/maven-metadata.xml
[error] Server access Error: Connection timed out: connect
url=https://repo1.maven.org/maven2/org/webjars/npm/right-align/
[warn] problem while listing resources in http://nexus.xxx.com:8081/nexus/repository/ivy-releases/org.webjars.npm/right-align/ with my-ivy-proxy-releases:
[warn] java.lang.NullPointerException charsetName
完全解决所有问题大约需要一个小时,因为它会尝试解决大约10个不同的org.webjars.npm库的依赖关系,并尝试每次尝试4个不同的网址。请注意,该项目无法编译。它最终从我们的nexus中提取了库,但是只有在超时其他url之后。如果在命令提示符下我sbt clean compile
,我仍然会收到警告,但解决时间可能会缩短(可能需要几分钟)。
安装node.js(编译器抱怨它无法找到js引擎)暂时解决了这个问题,直到build.sbt发生了变化并且必须刷新项目。
问题如下:
1.为什么在Intellij vs命令提示符下解决需要更长的时间?
2.为什么sbt不首先访问nexus存储库?
3.是否可以摆脱错误/警告或至少减少超时?