2016-05-23 42 views
1

我有以下的項目定義(簡體):引用未定義設置在多項目SBT的插件

object B extends Build { 
    lazy val root = (project in file(".")) 
    .aggregate(commons, processor) 

    lazy val commons = (project in file("commons")) 

    lazy val processor = (project in file("processor")) 
    .enablePlugins(BuildInfoPlugin, BuildTag) 
} 

BuildTag插件(也手頭簡化的問題):

object BuildTag extends AutoPlugin { 

    override def requires = BuildInfoPlugin 

    override lazy val buildSettings = Seq(
    packageOptions in (Compile, packageBin) += { 
     Package.ManifestAttributes(("buildinfo.package", (buildInfoPackage in Compile).value)) 
    } 
) 
} 

當我加載的項目,我得到這樣一個錯誤:

Reference to undefined setting: 

    {.}/compile:buildInfoPackage from {.}/compile:packageBin::packageOptions 

看起來SBT是試着g引用插件使用它的範圍之外的設置。爲什麼會這樣,我該如何解決它?

回答

1

這裏的問題不是多模塊性質,因爲它在單模塊項目中也是可重現的。

然而代替

override lazy val buildSettings = ... 

你需要使用projectSettings使buildInfoPackage任務使用。

相關問題