maven setting.xml相当于sbt

Xol*_*lve 3 scala maven sbt

为了使工件分离,包的来源不同,我的开发环境也很干净; 我settings.xml为项目组使用单独的文件.所以我用命令调用maven:

mvn -s $PROJECT_ROOT/mvn_settings.xml compile
Run Code Online (Sandbox Code Playgroud)

如何以类似的方式配置sbt?我的工作区提供了一个内部托管的JFrog存储库,它启用了sbt和Ivy插件.我尝试用各种关键字查找搜索引擎,但找不到匹配的文档.如果这是相关的,我使用带有Scala插件的IntelliJ Idea CE.

编辑1: 我希望能够控制我的工件存储位置,它们的来源以及它们与各个项目的关联.

编辑2:考虑两个settings.xml

  1. 对于我来自maven central的最小lib的随机项目:https://pastebin.com/nLc1PGa3

  2. 我公司的项目在一个大垃圾箱中:https://pastebin.com/R6a4jGQC所有来自不同的来源,在各自的文件夹中.此外,我可以独立移动我的项目,而不用担心哪个依赖链接可能会破坏其他无关的东西.

khm*_*ise 6

首先通过Maven中的settings.xml对事物进行分组并不是最好的方法.更好的方法是使用存储库管理器,它可以具有到特定存储库的路由,并分离存储库及其特定意图.(我使用单个settings.xml多年来一直没有更改.只有我的存储库管理器中的配置正在处理;这使生活更轻松,也在CI系统上).

根据sbt文档,您可以在文件中配置这样的代理存储库~/.sbt/repositories:

[repositories]
  local
  my-ivy-proxy-releases: http://repo.company.com/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  my-maven-proxy-releases: http://repo.company.com/maven-releases/
Run Code Online (Sandbox Code Playgroud)


Nam*_*man 2

尽管稍后或很快我会建议您正在构建的任何项目中遵循与 @khmarbaise 相同的做法。因为如果存储库来自相同的文件夹groupartifact或者即使它们不同maven/提供使用不同指定的依赖项构建不同项目的sbt支持,则似乎没有必要为存储库保留不同的文件夹。

与 Maven 类似,可以有一个构建设置串联,build.sbt作用如下:

它们按以下顺序附加:

  • .scala 文件中的 Build.settings 和 Project.settings 中的设置。
  • 您的用户全局设置;例如,在 ~/.sbt/build.sbt 中,您可以定义影响所有项目的设置。
  • 由插件注入的设置,请参阅接下来的使用插件。
  • 项目中 .sbt 文件的设置。
  • 构建定义项目(即项目内的项目)添加了全局插件(~/.sbt/plugins)的设置。使用插件可以更好地解释这一点。后面的设置会覆盖前面的设置。整个设置列表构成了构建定义。

因此,您可以覆盖全局 build.sbt 以使用指定存储库路径

"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
Run Code Online (Sandbox Code Playgroud)