Использование расширенного режима отображения Spring-Data-Neo4j в SBT
Я хотел бы использовать расширенный режим отображения spring-data-neo4j в моем проекте Scala SBT ( размещенном на github):
Я могу хранить узлы в базе данных вместе с репозиторием, но не могу заставить работать аспект-плетение.
Это то, что я до сих пор:
build.sbt:
resolvers ++= Seq(
"spring" at "http://repo.spring.io/milestone",
"neo4j-releases" at "http://m2.neo4j.org/releases/"
)
libraryDependencies ++= Seq(
"org.springframework.data" % "spring-data-neo4j" % "3.0.0.M1" % "compile",
"org.springframework.data" % "spring-data-neo4j-aspects" % "3.0.0.M1" % "compile",
"javax.persistence" % "persistence-api" % "1.0" % "compile",
"javax.validation" % "validation-api" % "1.0.0.GA" % "compile",
"junit" % "junit" % "4.11" % "test",
"com.novocode" % "junit-interface" % "0.9" % "test",
"org.springframework" % "spring-test" % "4.0.0.RELEASE" % "test"
)
Seq(aspectjSettings: _*)
verbose in Aspectj := false
showWeaveInfo in Aspectj := false
inputs in Aspectj <+= compiledClasses
binaries in Aspectj <++= update map { report:UpdateReport =>
report.matching(
moduleFilter(organization = "org.springframework.data", name = "spring-data-neo4j-aspects")
)
}
products in Compile <<= products in Aspectj
products in Runtime <<= products in Compile
Проект / plugins.sbt:
addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.9.4")
Класс узла и хранилище:
@NodeEntity
class Node {
@GraphId
private var graphId: java.lang.Long = _
}
trait NodeRepository extends GraphRepository[Node]
Тестовое задание:
@ContextConfiguration(locations = Array("classpath*:/META-INF/spring/module-context.xml"))
@RunWith(classOf[SpringJUnit4ClassRunner])
class SDNTest extends AbstractJUnit4SpringContextTests {
@Autowired private var nodeRepository: NodeRepository = null
@Test
def persist {
val node = new Node()
//nodeRepository.save(node)
node.persist()
}
}
Когда я пытаюсь запустить тест, я получаю следующие ошибки:
$ sbt test
[info] Weaving 1 input with 1 AspectJ binary to target/scala-2.10/aspectj/classes...
[error] error at sdntest/Node.scala::0 The type sdntest.Node must implement the inherited abstract method org.springframework.data.neo4j.aspects.core.GraphBacked.setPersistentState(Ljava/lang/Object;)
[error] see also: org/springframework/data/neo4j/aspects/core/GraphBacked.java::0
[error] see also: org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj:66::0
[error] error at sdntest/Node.scala::0 The type sdntest.Node must implement the inherited abstract method org.springframework.data.neo4j.mapping.ManagedEntity.setPersistentState(Ljava/lang/Object;)
[error] see also: org/springframework/data/neo4j/mapping/ManagedEntity.java::0
[error] see also: org/springframework/data/neo4j/aspects/support/node/Neo4jNodeBacking.aj:66::0
[warn] warning at /home/felix/.ivy2/cache/org.springframework.data/spring-data-neo4j-aspects/jars/spring-data-neo4j-aspects-3.0.0.M1.jar!org/springframework/data/neo4j/aspects/support/relationship/Neo4jRelationshipBacking.class:64::0 advice defined in org.springframework.data.neo4j.aspects.support.relationship.Neo4jRelationshipBacking has not been applied [Xlint:adviceDidNotMatch]
[warn] warning at /home/felix/.ivy2/cache/org.springframework.data/spring-data-neo4j-aspects/jars/spring-data-neo4j-aspects-3.0.0.M1.jar!org/springframework/data/neo4j/aspects/support/relationship/Neo4jRelationshipBacking.class:167::0 advice defined in org.springframework.data.neo4j.aspects.support.relationship.Neo4jRelationshipBacking has not been applied [Xlint:adviceDidNotMatch]
[warn] warning at /home/felix/.ivy2/cache/org.springframework.data/spring-data-neo4j-aspects/jars/spring-data-neo4j-aspects-3.0.0.M1.jar!org/springframework/data/neo4j/aspects/support/relationship/Neo4jRelationshipBacking.class:174::0 advice defined in org.springframework.data.neo4j.aspects.support.relationship.Neo4jRelationshipBacking has not been applied [Xlint:adviceDidNotMatch]
org.aspectj.bridge.AbortException: AspectJ failed
at com.typesafe.sbt.SbtAspectj$Ajc$.runAjcMain(SbtAspectj.scala:220)
...
Что я делаю неправильно?
1 ответ
Если вы повысите версию sbt до 0.13.2, она теперь работает:
project / build.properties ->
sbt.version=0.13.2
Я думаю, что что-то о плагине aspectj не работает в старых сборках sbt.