- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 SBT 中,如果它们都包含相同的子模块,那么在 dependsOn 之后使用 aggregate 是否是多余的?根据文档,似乎是这样,但我以前见过这种行为,但我不明白有什么好处。如果一个项目是用依赖项定义的,那是否已经暗示聚合对这些相同的依赖项做了什么?我注意到使用此冗余聚合后我的项目构建速度要慢得多,我想知道是否可以安全地删除它。
lazy val module = sbt.Project(...) dependsOn (foo, bar) aggregate (foo, bar)
或者只是...
lazy val module = sbt.Project(...) dependsOn (foo, bar)
我正在使用 SBT 0.13.6
最佳答案
tl;博士 aggregate
导致任务在聚合模块中执行,所有 aggregate
d 一会儿 dependsOn
设置一个 CLASSPATH 依赖,所以库对 aggregate
可见ing 模块(取决于示例中的 compile
又名 default
的配置)。
展示差异的示例。
我正在使用以下 build.sbt
(没什么有趣的):
lazy val a = project
lazy val b = project
lazy val c = project dependsOn b aggregate (a,b)
构建定义了三个模块 a
, b
, 和 c
最后 c
项目将成为 a
的聚合和 b
.还有第四个模块——一个隐含的模块——聚合所有模块a
, b
, 和 c
.
> projects
[info] In file:/Users/jacek/sandbox/aggregate-dependsOn/
[info] a
[info] * aggregate-dependson
[info] b
[info] c
当我在 aggreate
中执行任务时ing 模块,任务将在 aggregate
中执行d 模块。
> compile
[info] Updating {file:/Users/jacek/sandbox/aggregate-dependsOn/}b...
[info] Updating {file:/Users/jacek/sandbox/aggregate-dependsOn/}a...
[info] Updating {file:/Users/jacek/sandbox/aggregate-dependsOn/}aggregate-dependson...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Updating {file:/Users/jacek/sandbox/aggregate-dependsOn/}c...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[success] Total time: 0 s, completed Oct 22, 2014 9:33:20 AM
当我在 c
中执行任务时也会发生同样的情况这将依次针对 a
执行它和 b
,但不在顶级项目中。
> show c/clean
[info] a/*:clean
[info] ()
[info] b/*:clean
[info] ()
[info] c/*:clean
[info] ()
[success] Total time: 0 s, completed Oct 22, 2014 9:34:26 AM
当一个任务在 a
中执行时或 b
,它只在项目内运行。
> show a/clean
[info] ()
[success] Total time: 0 s, completed Oct 22, 2014 9:34:43 AM
任务是否在aggregate
中执行项目由 aggregate
控制项目和/或任务的键。
> show aggregate
[info] a/*:aggregate
[info] true
[info] b/*:aggregate
[info] true
[info] c/*:aggregate
[info] true
[info] aggregate-dependson/*:aggregate
[info] true
按照 Aggregation 中的说明进行更改:
In the project doing the aggregating, the root project in this case, you can control aggregation per-task. (...)
aggregate in
update is the aggregate key scoped to the update task.
下面我正在更改 c
的 key 模块和 clean
任务所以clean
不再在 aggregate
中执行d 模块 a
和 b
:
> set aggregate in (c, clean) := false
[info] Defining c/*:clean::aggregate
[info] The new value will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to aggregate-dependson (in build file:/Users/jacek/sandbox/aggregate-dependsOn/)
> show c/clean
[info] ()
[success] Total time: 0 s, completed Oct 22, 2014 9:39:13 AM
c
的其他任务不受影响,仍在执行 c
中的任务将在 aggregate
中运行它模块:
> show c/libraryDependencies
[info] a/*:libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.4)
[info] b/*:libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.4)
[info] c/*:libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.4)
而aggregate
为 sbt 任务设置依赖关系,以便它们在另一个 aggregate
中执行d 模块,dependsOn
设置 CLASSPATH 依赖关系,即 dependsOn
中的代码ed 模块在 dependsOn
中可见ing 一个(对不起"new"词)。
假设 b
有一个主要对象如下:
object Hello extends App {
println("Hello from B")
}
保存Hello
反对b/hello.scala
,即在 b
下模块。
自从 c
被定义为 dependsOn b
(见 build.sbt
以上),Hello
对象在 b
中可见(因为它属于模块),而且在c
.
> b/run
[info] Running Hello
Hello from B
[success] Total time: 0 s, completed Oct 22, 2014 9:46:44 AM
> c/runMain Hello
[info] Running Hello
Hello from B
[success] Total time: 0 s, completed Oct 22, 2014 9:46:58 AM
(我不得不在 runMain
中使用 c
作为 run
一个人看不到我无法解释的类)。
尝试在 a
中运行任务以 java.lang.ClassNotFoundException: Hello
结尾因为该类在模块中不可见。
> a/runMain Hello
[info] Updating {file:/Users/jacek/sandbox/aggregate-dependsOn/}a...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Running Hello
[error] (run-main-6) java.lang.ClassNotFoundException: Hello
java.lang.ClassNotFoundException: Hello
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[trace] Stack trace suppressed: run last a/compile:runMain for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last a/compile:runMain for the full output.
[error] (a/compile:runMain) Nonzero exit code: 1
[error] Total time: 0 s, completed Oct 22, 2014 9:48:15 AM
重新定义 a
至dependsOn b
在 build.sbt
异常消失了。
您应该阅读 Multi-project builds在官方文档中。
关于build - 使用 'aggregate' 后跟 'dependsOn' 是否与相同的模块冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26477388/
刚刚收到一条错误消息,内容为“union __anonymous 只能是聚合的一部分”。我对此并不感到困惑,因为我正在尝试一些我知道不应该起作用的东西。 但这让我想知道 D 中“聚合”的确切定义是什么
我最近在研究ES,发现可以达到几乎相同的结果,但是对于这两者之间的 DIFFERENCE ,我不清楚。 "Filter then Aggregation" POST kibana_sample_dat
给定用户和订单表,我需要计算在注册日期后的第二天首次下单的用户。 我设法通过以下查询列出了此类用户: SELECT users.first_name as first_name, users.
我有我的文档,它们包含嵌套的“事件”(如网站上的点击)文档。 现在我想计算 name=x 的嵌套事件和 name=y 的嵌套事件之间的比率 这是我的查询: curl -XGET http://192.
在我的项目中,我发现需要以分层方式打破我的聚合,使用顶级根级别聚合,以确保根级别的规则一致性,然后我的根下的对象可以分组为各种聚合。在计算根级聚合的完整性时,根验证自己的规则,然后委托(delegat
我想通过 MongoTemplate 执行的代码: { $merge: { into: 'someCollection', on: "_id",
在过去的两周里,我一直在研究DDD,而真正令我难忘的一件事是聚合根如何包含其他聚合根。从存储库中检索聚合根,但是如果一个根包含另一个根,该存储库是否具有对另一个存储库的引用,并要求其构建子根? 最佳答
我对如何设计聚合有疑问。 我有Company , City , Province和 Country实体。其中每一个都需要是其自身聚合的聚合根。 City , Province和 Country实体在整
我对如何设计聚合有疑问。 我有Company , City , Province和 Country实体。其中每一个都需要是其自身聚合的聚合根。 City , Province和 Country实体在整
我目前正在开发 DDD 应用程序,我对如何处理似乎必须从另一个聚合根访问聚合根的场景感到困惑。这是我的边界上下文的概述: 用户可以加入该站点并就他们感兴趣的主题创建帖子。他们还可以创建群组并针对他们创
我正在用 reSolve 做我的第一个项目,但在 DDD、ES 和 CQRS 方面的经验有限。所以,也许有一个非常简单的解决方案,但我还没有找到。 我的问题:在我的项目中,一个聚合的状态(订单状态)实
https://howtoprogram.xyz/2017/02/18/using-group-apache-cassandara/ 我试图在 azure cosmos cassandra db 中执
使用 Siddhi 3.0.3 作为 Java 库。 我通过扩展 AttributeAggregator 类开发了自定义聚合函数,并且在调用 processRemove() 方法后我看到了一些奇怪的行
我正在尝试对一个公司拥有许多团队的问题进行建模。有一条业务规则“每个公司的团队名称必须是唯一的”。然而,团队还有许多其他行为,例如加入。此外,一个团队可以有许多报告 - 它们维护对Team.Id的引用
我正在尝试将总计的结果相加并将其减去总计,但我看到以下错误: 想象一下这样的事情 第一个子查询:1 3 5 7第二个子查询:2 4 6 总计:(1+3+5+7) - (2+4+6) = 4 这是我的查
我有以下 DDD 场景,分为以下聚合: 用户, friend (用户协会), 文件(供用户上传), 图库(文件分组), 消息(用户通信), 群组(用户可以创建,其他成员可以加入), GroupMess
这个问题之前已经讨论过,但没有一个答案能解决我的具体问题,因为我正在处理内部和外部选择中的不同 where 子句。该查询在 Sybase 下执行得很好,但在 SQL Server 下执行时会出现本文标
上下文 我使用 Azure 门户创建了一个流作业,该门户使用每日 TUMBLINGWINDOW 聚合数据。下面附上了一个代码片段,修改自 docs ,这显示了类似的逻辑。 SELECT DAT
我正在执行以下查询 SELECT DISTINCT n.nid AS entity_id FROM node n INNER JOIN og_membership om ON n.nid=om.eti
我的各种 docker 容器都导出 prometheus 指标,但是我们的 prometheus 安装只需要从一个端点提取所有指标。不幸的是,这无法更改。因此,我需要通过安装普罗米修斯来收集所有指标。
我是一名优秀的程序员,十分优秀!