- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下多项目文件夹结构:
/ComponentA/ComponentA.scala
/ComponentA/build.sbt
/ComponentB/ComponentB.scala
/ComponentB/build.sbt
/project/Build.scala
main.scala
在根对象 main.scala
中应该发生以下情况:ComponentA
返回一个字符串消息,ComponentB
读入并打印出来。
文件内容如下:
组件A
object ComponentA {
def main(args: Array[String]) {
var myMessage : String = "this message should be passed to ComponentB";
println("Message to forward: %s \n\n\n ".format(myMessage))
return myMessage;
}
}
组件B
object ComponentB {
def main(args: Array[String]) {
println("\n\n\n Inside ComponentB! \n\n\n ")
println("Message received: %s \n\n\n ".format(args(0)))
}
}
Build.scala
import sbt._
import Keys._
object RootBuild extends Build {
lazy val root = Project(id = "root", base = file("."))
.dependsOn(ComponentA, ComponentB)
lazy val ComponentA = Project(id = "ComponentA", base = file("ComponentA"))
lazy val ComponentB = Project(id = "ComponentB", base = file("ComponentB"))
.dependsOn(ComponentA)
}
main.scala
object ComponentB {
def main(args: Array[String]) {
println("\n\n\n Inside main! \n\n\n ")
// THIS SHOULD HAPPEN:
// ComponentB(ComponentA());
}
}
该项目结构是否可行?如果是这样,代码将如何用于 main.scala
?
最佳答案
根项目中的以下 build.sbt
应该可以让您创建该项目结构。
lazy val ComponentA = project
lazy val ComponentB = project dependsOn ComponentA
lazy val root = project in file(".") dependsOn (ComponentA, ComponentB) aggregate (ComponentA, ComponentB)
您必须修复组件对象中的一些问题才能编译,但项目的类路径应该没问题。
然而,将根项目作为子模块的聚合是一种常见的方法,因此在您的情况下,root
不应将 dependsOn
与另一个单独的项目 ComponentAB
将 dependsOn ComponentB
(因此 ComponentA
因为 ComponentB
已经依赖于它)。
下面的代码应该非常小心,并且只是为了这个问题。
ComponentA/ComponentA.scala
object ComponentA {
def apply(): String = {
var myMessage = "this message should be passed to ComponentB"
println(s"Message to forward: $myMessage\n\n\n")
myMessage
}
}
ComponentB/ComponentB.scala
object ComponentB {
def apply(msg: String) = {
println("\n\n\n Inside ComponentB! \n\n\n ")
println("Message received: $msg\n\n\n")
}
}
Main.scala
object MainObject {
def main(args: Array[String]) {
println("\n\n\n Inside main! \n\n\n ")
//ComponentB(ComponentA())
ComponentA()
}
}
有了这些文件,当您运行
时,您应该得到以下输出:
[root]> run
[info] Running ComponentB
Inside main!
Message to forward: this message should be passed to ComponentB
[success] Total time: 0 s, completed Jan 20, 2014 9:59:32 PM
关于scala - 如何在 SBT 的多项目构建中使用另一个子项目中的对象/类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183074/
我正在开发几个不同的 Joomla 附加组件,但希望将它们保留为单独的 git 存储库,因为它们有不同的开发团队(甚至组织)。但是,我也想将它们作为共享相同 Joomla 基础(被 .gitignor
最近,由于行销人员的要求,我已将Optimobile SDK添加到我正在工作的项目中。 在将其添加并在设备上安装新的apk之后。我注意到,我的应用程序中添加了两个新权限,即无需用户交互即可发送SMS的
我遇到了gradle plugin帮助我处理带点的属性名称。像这样使用时,它在单个项目中工作正常: apply plugin: 'config' buildscript { repositor
我很难设置一组相互依赖的相关 Maven 项目。 这是我的简化案例: pom.xml -- parent pom \base\ pom.xml src\main\java\Ba
我正在研究 Apache Ant 项目的发展,以使用 Gradle 对其进行编译,并且我有不同的子项目集。 我的目标是将主项目的输出用作某些子项目的依赖项。全局配置如下: MainProject:
对于每个用户帐户,我尝试计算他们今天有多少个事件。 我的数据结构如下: accounts - { "-KaxcGWx1-a8s7dhsjhsd" : { "name" : "Bill", "ev
我有两个项目: workspace Project1 |--build.gradle |--settings.gradle |--Subproject1 | |--build.
我们有一个 Maven 多模块项目,我们希望逐步迁移到一个 gradle 项目。 对于初学者,我只想将几个子项目迁移到 gradle,但将它们作为子项目保留到父 maven-project 构建。 有
我的 gradle 项目结构如下所示: geode-core geode-lucene extensions/geode-modules extensions/geode-modules-sessio
我有一个基于 CMake 的项目,具有以下“设计”: add_subdirectory(first_lib) add_subdirectory(second_lib) add_subdirectory
我创建了一个表单,其中有 2 个部分,一个是标题(父级),另一个是子级。在标题部分,我创建了一个字段,如项目(下拉),如 netsuite、SFDC 等,在子部分,我创建了另一个字段,如子项目。当我根
我正在创建一个新的应用程序 MyApp,我决定将应用程序的某些部分放在一个单独的框架 MyFramework 中,而不是应用程序本身,以使其可重用在其他项目中。该框架有自己的项目 (MyFramewo
想象一个包含多个组件的整体项目: 基本 我 网络 app-a app-b app-c 现在,假设 web 依赖于依赖于 basic 的 io,所有这些东西都在一个 repo 中,并且有一个 CMake
我有一个 SBT 项目,特别是 Play Framework 2.1 项目,它在配置中指定了许多子项目。编译时依赖项似乎工作正常,但“清理”似乎只清理当前选定的项目,不包括其依赖项。有什么方法可以清理
我有一个工作的多模块 Play 2.2 应用程序,它的组织方式是这样的...... myApp + app + conf + project + build.propertie
我无法理解模块和子项目之间的区别。有什么区别,哪个应该用于模块应用程序。 最佳答案 使用这两种方法,您都可以单独编译、运行和测试代码。 使用子项目,您可以共享设置,并且它通过源代码连接到依赖它的项目:
我有一个使用 Scala 2.10 的项目和一个使用 Scala 2.11 的项目。它们依赖于一个可以同时编译的通用项目。 lazy val foo = (project in file("foo")
如何让 gradle 克隆一个 git 存储库(到当前存储库的子存储库)并将其构建为子项目? 目前我有以下内容: settings.gradle: include 'contrib/dependenc
我在我的 gradle 项目中添加了一个子项目,现在每当我执行目标 check ,它还在我的子项目上运行测试。 我希望我可以运行 check - 主项目上的任务,将其指定为绝对任务 gradle :c
假设您有 2 个 gradle 项目。第一个是一个包含 2 个 java 子项目的多项目: rootProject :my:subProject1 :myother:subProjec
我是一名优秀的程序员,十分优秀!