【发布时间】:2014-10-18 01:29:06
【问题描述】:
我有一个简单的构建工具多项目问题...
我有以下目录结构代表我的 java sbt 项目:
/project1
/project2
/project3
所以所有项目共享一个共同的直接父文件夹。 项目 2 和 3 在项目 1 的 build.sbt 中引用如下:
.dependsOn(project2, project3)
.aggregate(project2, project3)
lazy val project2 = ProjectRef(file("../project2"), "project2")
lazy val project3 = ProjectRef(file("../project3"), "project3")
这样在 project1 和其他之间就有了依赖关系。
到目前为止一切都很好,一切正常。
但现在我想在执行其他任何操作之前从 project2 执行 main 方法。 当我从父级(project1)执行“运行”任务时,我希望 project2 中的特定类执行其主要方法。我该怎么做呢? sbt 文档解释说“聚合意味着在聚合项目上运行任务也会在聚合项目上运行。”: http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi-Project.html#aggregation
我没有看到我在 projet2 上的主要课程被执行。我还将它添加到 project2 的 build.sbt 中:
mainClass in (Compile, run) := Some("Main")
该项目的目标是在编译时和运行时生成代码。 Project2 的工作是生成 Java 和 Javascript 代码。可以在构建其他项目之前生成。
这可能吗?如果没有,我将不得不独立于其他项目运行 project2。
=]
【问题讨论】:
-
令人惊讶的是,您对此没有任何建议。你还记得吗,你能以某种方式解决它吗?
-
stackoverflow.com/questions/20132100/sbt-run-task-on-subproject 似乎有解决办法:
run in Compile <<= (run in Compile in project2) -
@Misael Neto 你能做到吗?如果是怎么办?
标签: java scala sbt multi-project subproject