1

Playを使用しています!2.0 で、ビルド システムについて質問があります。複数のプロジェクトの集合体があり、静的ファイルと css にコンパイルされるいくつかの .less ファイルを含む共有モジュールがあります。

静的ファイルとコンパイル済みスタイルシートの出力を他のプロジェクトにコピーするにはどうすればよいですか? 私は自分で理解しようとしましたが、プロジェクトに設定を簡単に適用できますが、別のプロジェクトからその設定を取得できないようです。

プレイを調べてみました!2.0 キー

val playAssetsDirectories = SettingKey[Seq[File]]("play-assets-directories")

val incrementalAssetsCompilation = SettingKey[Boolean]("play-incremental-assets-compilation")

val playExternalAssets = SettingKey[Seq[(File, File => PathFinder, String)]]("play-external-assets")

しかし、この情報を使用してビルド ファイルを変更する方法がわかりません。

object ApplicationBuild extends Build {

    val appName         = "Website"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      // Add your project dependencies here,
    )

    val common = PlayProject(
        appName + "-common", appVersion, path = file("modules/common"),mainLang=SCALA,
    lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "bootstrap.less")
    )



    val website = PlayProject(
        appName + "-website", appVersion, path = file("modules/website"),mainLang=SCALA,

    ).dependsOn(common)

    val adminArea = PlayProject(
        appName + "-admin", appVersion, path = file("modules/admin"),mainLang=SCALA,

    ).dependsOn(common)

    val main = PlayProject(
        appName, appVersion,appDependencies,mainLang=SCALA
    ).dependsOn(
        website, adminArea
    )
}

私が基本的に言いたいことは、次のとおりです。

website.playExternalAssets += common.playAssetsDirectory(IncludingCompiled)

しかし、これは明らかに合法ではありません。

私は実際にはもう少し理解しており、次のコードはほぼ正しいようです。

  val website = PlayProject(
        appName + "-website", appVersion, path = file("modules/website"),mainLang=SCALA

    ).dependsOn(common).settings(playExternalAssets <<= common.playAssetsDirectory(IncludingCompile))

common.playAssetsDirectory が機能しないことを除いて:

[info] Loading project definition from G:\project1\project [error] G:\project1\project\Build.scala:26: value playAssetsDirectory is not a member of sbt.Project [error]         ).dependsOn(common).settings(playExternalAssets <<= common.playA ssetsDirectory(IncludingCompile)) [error]                              ^ [error] one error found [error] {file:/G:/project1/project/}default-436781/compile:compile: Compilati on failed

ここでの問題は、キーが定数値であり、プロジェクトのプロパティではないことです。実際、キーは PlayKeys で定義された定数グローバル値であるため、実際にはスコープを指定する必要がありますが、方法がわかりません

4

1 に答える 1

1

ああ、その話題は私を誤解させました。設定を共有するのではなく、コピーする必要があります。JAR を利用できるようにする他のプロジェクトに依存することができます。その後、getResource を使用してリソースを取得できます。

私の知る限り、プロジェクトのルート以外のものに依存することはできません。これには、他のプロジェクトのファイルが含まれます。

その時点から、タスクが必要になります。タスクで jar からデータを解凍し、適切な場所にコピーすることができます。

また、代替手段を提供する可能性のあるものをコピーするタスクを調べることもできます。

于 2012-08-24T13:00:30.843 に答える