7

我需要让 Maven 和 SBT 都使用本地 Artifactory-server,它是唯一具有 Internet 连接的机器。服务器、CI 机器等无法访问外部世界。

尤其是 SBT,我的头发变白了。

连接到 Artifactory 的 SBT 问题

使用 0.11.[0..3] 我可以通过以下方式 SBT 访问 Artifactory:

  • 解压 sbt-launcher.jar
  • 获取 sbt.boot.properties 并将其复制到某处
  • 编辑 sbt.boot.properties 以仅包含“本地”存储库和我们的 Artifactory 服务器

对于 0.12 或 0.13 版本,我没有运气。我已经尝试过这里的说明:https ://github.com/harrah/xsbt/pull/472 。所以我做了以下工作:

  • 我自己建立了 SBT
  • 我已将“存储库”文件放入 ~/.sbt/
  • “存储库”文件包括:

    [repositories]

    local

    ivy-proxy: http://devserver:8081/artifactory/repo/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]

    maven-proxy: http://devserver:8081/artifactory/repo/

  • 我在 SBT 的启动命令中包含了“-Dsbt.override.build.repos=true”,现在看起来像这样:

    java -Xms1536m -Xmx1536m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=192m -Dsbt.override.build.repos=true -Dsbt.global.base=/Users/amjr/.sbt/0.13.0-SNAPSHOT -jar /Users/amjr/.bin/.lib/0.13.0-SNAPSHOT/sbt-launch.jar

但是 0.12 和 0.13 拒绝访问 Artifactory,而是尝试直接连接到 typesafe、maven central 等。

SBT确实访问它时的工件和问题

现在对于 0.11 系列的 SBT,我可以让它连接到 Artifactory。然后是 SBT 无法找到编译项目所需的包的问题。这是示例:

==== local-artifactory-libs-snapshot: tried

  http://devserver:8081/artifactory/libs-snapshot/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar

==== local-artifactory-libs-releases: tried

  http://devserver:8081/artifactory/libs-release/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar

==== local-artifactory-plugins-releases: tried

  http://devserver:8081/artifactory/plugins-release/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar

这显然与 Artifactory 配置有关。如果有人有任何指示我应该如何以及应该使用 Artifactory 代理哪些存储库以便成功地将它与 SBT 一起使用,我将不胜感激。

4

1 回答 1

4

我为我们的工作环境设置了以下对 scala 友好的存储库:

您上面提到的编译器接口在 Typesafe 存储库中,具体来说

http://repo.typesafe.com/typesafe/maven-ivy-releases/org.scala-sbt/compiler-interface/0.11.3/

于 2012-12-04T17:11:07.317 回答