SBT构建,在Compile上运行子项目的主类并运行

Mis*_*eto 9 java scala multi-project subproject sbt

我有一个简单的构建工具Multi-Project问题...

我有以下目录结构代表我的java sbt项目:

/project1
/project2
/project3
Run Code Online (Sandbox Code Playgroud)

所以所有项目共享一个共同的直接父文件夹.项目1的build.sbt中引用了项目2和3,如下所示:

.dependsOn(project2, project3)
.aggregate(project2, project3)

lazy val project2 = ProjectRef(file("../project2"), "project2")

lazy val project3 = ProjectRef(file("../project3"), "project3")
Run Code Online (Sandbox Code Playgroud)

这样,project1和其他人之间存在依赖关系.

到目前为止一切都很好,一切正常.

但是现在我想在执行任何其他操作之前从project2执行main方法.当我从父(project1)执行"运行"任务时,我希望project2中的特定类执行其主要方法.我该怎么做呢?sbt文档解释说" 聚合意味着在聚合项目上运行任务也将在聚合项目上运行它. ":http: //www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi -Project.html#聚合

我没有看到projet2上的主要课程已被执行.我还将它添加到project2的build.sbt中:

mainClass in (Compile, run) := Some("Main")
Run Code Online (Sandbox Code Playgroud)

该项目的目标是在Compiletime和运行时生成代码.Project2的工作是生成Java和Javascript代码.可以在构建其他项目之前生成.

那可能吗?如果没有,我将不得不独立于其他项目运行project2.

=]

and*_*hdo 5

如果我有如下所示的结构:

+ root +--- backend +--- frontend 和一个类似于http://www.scala-sbt.org/0.13/docs/Multi-Project.html中所示的 build.sbt 项目,可以说:

lazy val commonSettings = Seq(
  version := "0.1.0-SNAPSHOT",
  scalaVersion := "2.12.1",
  resolvers := allResolvers,
  libraryDependencies := AllLibraryDependencies
)

lazy val client = (project in file("client")).
  //  .enablePlugins(PlayScala)
  settings(commonSettings: _*).
  settings(
    name := "client"
  )
  .aggregate(common, frontend, backend)
  .dependsOn(common, frontend, backend)


lazy val common = (project in file("common")).
  settings(commonSettings: _*).
  settings(
    name := "common"
  )

lazy val frontend = (project in file("frontend")).
  settings(commonSettings: _*).
  settings(
    name := "frontend"
  )
  .aggregate(common)
  .dependsOn(common)

lazy val backend = (project in file("backend")).
  settings(commonSettings: _*).
  settings(
    name := "backend"
  )
  .aggregate(common)
  .dependsOn(common)
Run Code Online (Sandbox Code Playgroud)

`

然后要执行前端项目中的一个类,这个命令对我有用:

sbt "frontend/runMain sample.cluster.transformation.frontend.TransformationFrontendApp 2551"