2017-04-03 156 views
0

我有一个sbt项目与多个模块,每个都有自己的build.sbt文件。sbt多模块项目从另一个模块导入特征

在根项目,我有以下几点:

lazy val commonSettings = Seq(
    organization := "com.game.scala", 
    sourcesInBase := false, 
    fork in run := true, 
    scalaVersion := "2.12.1" 
) 

lazy val common = project.settings(commonSettings) 

lazy val original = project.settings(commonSettings).dependsOn(common) 

lazy val functional = project.settings(commonSettings).dependsOn(common) 

lazy val root = (project in file(".")) 
    .aggregate(original, functional) 
    .settings(commonSettings) 

的build.sbt在所有子模块都几乎是相同的:

lazy val module = (project in file(".")) 

    .settings(
    name := "Game subpart", 
    version := "0.1.0-SNAPSHOT" 
) 

和项目的布局看起来是像:

root 
|__ common 
|__ original 
|__ functional 

问题是,从functional模块内,我F I尝试导入在common模块声明的特质,我得到一个错误,这是不可用:

Error:(1, 12) object game is not a member of package com

import com.game.scala

我缺少什么?

回答

1

这是因为您从未编译过您的common项目。除非明确要求,否则dependsOn方法仅向其他项目添加依赖项,但不对其执行任何操作。如果您希望在编译functional模块时重新编译依赖关系,则应同时执行dependsOn(common)aggregate(common)

+0

感谢您的回答,但没有解决问题。无论如何,sbt给了我足够的头痛,我决定改用gradle – smac89

相关问题