相关疑难解决方法(0)

如何设置sbt,以便在线时抓取所有必要的依赖项,让我离线工作呢?

我尝试在没有互联网连接区域的情况下处理我的项目.令我惊讶的是,在这种情况下,sbt遇到了麻烦.虽然,我应该将我的库放在缓存中(鉴于我最初在线启动项目),sbt无法解决某些依赖关系.

Sbt无法获取我的本地maven存储库,也无法找到我认为已经下载的其他依赖项(即在缓存中).

*

我的问题是:如何确保当我有连接时,sbt获取缓存ONCE中的libs,这样当我没有它时,它会获取我的所有本地仓库,包括maven.

我问这个是因为我对当前情况的理解(即没有互联网连接时):

  1. sbt从maven缓存下载时遇到问题
  2. sbt可以找到我在ivy local中的大多数依赖
  3. sbt找不到某些特定的依赖,由于某些原因,显然没有缓存.

例如,这里有sbt应该已经缓存的一些libs.

[warn]   file:///Users/maatary/.m2/repository/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4.pom
[info] Resolving com.google.inject.extensions#guice-multibindings;4.0-beta4 ...
**[warn] Host repo1.maven.org not found.** url=http://repo1.maven.org/maven2/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
**[info] You probably access the destination server through a proxy server that is not well configured.**
[warn]  module not found: com.google.inject.extensions#guice-multibindings;4.0-beta4
**[warn] ==== local: tried
[warn]   /Users/maatary/.ivy2/local/com.google.inject.extensions/guice-multibindings/4.0-beta4/ivys/ivy.xml**
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
[warn] ==== Local Maven Repository: tried
[warn]   file:///Users/maatary/.m2/repository/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
[info] Resolving jline#jline;2.12 ...                                          
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.google.inject.extensions#guice-assistedinject;4.0-beta4: not …
Run Code Online (Sandbox Code Playgroud)

sbt

6
推荐指数
1
解决办法
1225
查看次数

SBT中任务和命令之间的差异和相似之处

我最近被告知不要在这个答案上混淆任务和命令,这让我首先意识到甚至存在差异.在我的研究过程中,混淆甚至更多,我必须承认,我显然无法将两者分开!我认为主要的问题是术语经常被同义地使用,但概念是不同的,高度相关并且在某种程度上非常相似.阅读文档并没有让我满意.我不想在sbt文档中明确显示问题,所以不要误解我,但我希望你能看到我目前的进展.我在旅途中将我的问题标记为大胆,并在其前面添加了一个数字.

研究

我咨询的第一个资源是文档中的" 任务和命令"部分,它仅指向入门指南.

入门

入门指南并没有真正解释这方面的差异.特别是定义任务和设置部分似乎引入了更多的混淆,以及类型之间的目标; Setting[T],Setting[Task[T]],Task[T]和键和与其对应的类型的术语.

TaskKey[T]据说A 定义了一个任务.任务是诸如compile或之类的操作package.它们可能返回Unit(Unit为Scala void),或者它们可能返回与任务相关的值,例如packagea TaskKey[File],它的值是它创建的jar文件.

这有点古怪但现在还可以,因此TasksTaskKey具有类型结果的实例T.

每次启动任务时,例如通过compile在交互式sbt提示符下键入,sbt将重新运行一次涉及的任何任务.

因此,任何任务都可以在sbt提示符下找到.那么命令的区别在哪里呢?在其他部分,两者似乎都是同义词,就像这里一样." 更多关于设置 "部分进一步描述:

请记住,某些设置描述了任务,因此这种方法也会在任务之间创建依赖关系.

因此,任务可能相互依赖,由设置引入.

插件扩展了构建定义,最常见的是添加新设置.新设置可能是新任务.例如,插件可以添加codeCoverage任务,该任务将生成测试覆盖率报告.

插件可能会使用设置引入新任务.

还要记住.sbt构建定义,设置在项目重新加载之前具有固定值,而每次"任务执行"都会重新计算任务(每次有人在sbt交互式提示符或批处理模式下键入命令时).

这让我觉得命令只是在sbt提示符下输入的内容,或者是使用批处理模式直接输入到终端的命令.此外,它产生了一个想法,即命令仅作为每个任务的浅前端.#1每个任务都有相应的命令吗?

通过定义触发的插件,可以使用自动插件作为跨所有子项目注入自定义任务命令的便捷方式.

在这里,我认为命令可以单独设置 - 类似于任务.但是," 运行命令 …

scala sbt

6
推荐指数
1
解决办法
648
查看次数

标签 统计

sbt ×2

scala ×1