私は複数プロジェクトのSBTビルドを簡略化するためにいくつかのAutoPluginsを作成しました。SBT AutoPluginにアーティファクトが追加されていません
これらのAutoPlugの1つはTaskKey[File]
を定義し、そのタスクの結果にアーティファクトを追加します。
object PluginA extends AutoPlugin {
val content: SettingKey[File] = taskKey[String]("")
val generateArtifact: TaskKey[File] = taskKey[File]("generated artifact file")
override lazy val projectSettings: Seq[Def.Setting[_]] = {
addArtifact(
Artifact("foo", "xml", "xml"), generateArtifact
).settings ++
Seq(
generateArtifact := {
val bar = content.value
...
}
)
}
}
それから私はいくつかの設定を追加するには、上記のプラグインをrequires
別AutoPluginを持っています。
object PluginB extends AutoPlugin {
override def requires: Plugins = PluginA
override lazy val projectSettings: Seq[Def.Setting[_]] = Seq(
content := "..."
)
}
これまでのところすべてです。 は今、私は私のsbtコンソールでpublishLocal
を入力したときにのみ、デフォルトの成果物が公開され、build.sbt``
val someModule = (project in file("Module")).enablePlugins(PluginB, AndroidJar)
val someApp = (project in file("Application")).enablePlugins(PluginB, AndroidApp)
`に私のプロジェクトに新しい案件を追加しようではなく、私の新しいXMLファイル。 show artifacts
にはアーティファクトも表示されません。
しかし、show generateArtifact
が目的のファイルを生成するため、プラグインとプラグインの設定がロードされていることがわかりました。どこかで失われたのはアーティファクトだけです。私はSBT-アンドロイドAutoPluginを追加する場合には、消滅しながら
(私の知る限り)同様のセットアップ任意のSBT-アンドロイドAutoPluginなしNOTE
Anが、希望アーティファクトを生成します。
また、プラグインの順番でenablePlugins
に遊んでいました。
私は"org.scala-android" %% "sbt-android" % "1.7.2"
とsbt 0.13.13
を使用しています。