Как настроить компиляцию аспекта в playframework 2.1.1

Я добавил в plugins.sbt это объявление

addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.9.0")

Теперь я хотел бы настроить этот плагин для компиляции моих классов java-контроллера с использованием библиотеки аспектов org.springframework:spring-aspects:3.1.4, как и с aspectj-maven-plugin

Я установил эту конфигурацию:

import sbt._
import Keys._
import play.Project._
import com.typesafe.sbt.SbtAspectj._
import com.typesafe.sbt.SbtAspectj.AspectjKeys._

object ApplicationBuild extends Build {

    val appDependencies = Seq(javaCore)

    val main = play.Project(appName, appVersion, appDependencies).settings(
        AspectjKeys.verbose in Aspectj := true,
        AspectjKeys.showWeaveInfo in Aspectj := true,
        AspectjKeys.inputs in Aspectj <+= compiledClasses
    )

}

Но это не удается.

[error] Reference to undefined setting: 
[error] 
[error]   aspectj:inputs from aspectj:inputs

Я действительно новичок в sbt.

Страница плагина на github: https://github.com/sbt/sbt-aspectj


person amertum    schedule 15.05.2013    source источник


Ответы (1)


Хорошо, я заставляю это работать, благодаря списку рассылки sbt, ср. https://groups.google.com/forum/?fromgroups=#!topic/simple-build-tool/MUXyfKigC7w

а также список рассылки playframework, ср. https://groups.google.com/forum/?fromgroups=#!topic/play-framework/RfJFEwVbUUk

На самом деле это было не очень сложно, но что-то, что вы не можете видеть.

import sbt._
import Keys._
import play.Project._
import com.typesafe.sbt.SbtAspectj._
import com.typesafe.sbt.SbtAspectj.AspectjKeys._

object ApplicationBuild extends Build {

    val appDependencies = Seq(javaCore, filters)

    val main = play.Project(appName, appVersion, appDependencies)
            .settings(aspectjSettings: _*)
            .settings(
                    libraryDependencies += "org.springframework" % "spring-aspects" % "3.1.4.RELEASE",
                    libraryDependencies += "org.springframework.security" % "spring-security-aspects" % "3.1.4.RELEASE",
                    sourceLevel := "-1.7",
                    verbose in Aspectj := false,
                    showWeaveInfo in Aspectj := false,
                    inputs in Aspectj <+= compiledClasses,
                    binaries in Aspectj <++= update map { report =>
                        report.matching(
                                moduleFilter(organization = "org.springframework", name = "spring-aspects")
                                || moduleFilter(organization = "org.springframework.security", name = "spring-security-aspects")
                        )
                    },
                    products in Compile <<= products in Aspectj,
                    products in Runtime <<= products in Compile
                )
}

Не забудьте добавить это в plugins.sbt с новым разделителем строк между объявлением

addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.9.0")
person amertum    schedule 17.05.2013