在SBT

2014-01-11 31 views
5

使用Spring-数据Neo4j的先进的地图模式,我想用弹簧数据的Neo4j的advanced mapping mode在我的斯卡拉SBT项目(hosted on github):在SBT

我可以存储节点与数据库存储库,但我无法进行aspectj-weaving工作。

这是我到目前为止有:

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") 

Node类和资源库:

@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) 
... 

我在做什么错?

+0

我'git clone'd这个项目,但是当'sbt test'我结束了'sbt.ResolveException:无法解析的依赖:org.neo4j#neo4j-cypher-dsl; 2.0.0-M06:not found'。你在哪里找到它? –

+0

的确,neo4j-resolver失踪了。我只是推动了修复。 – man

回答

0

如果你碰到了SBT版本0.13.2现在它工作:

项目/ build.properties - >

sbt.version=0.13.2 

我的猜测是一些关于AspectJ的插件中老年不起作用sbt builds。

+0

我收到了和以前一样的错误。考试通过了吗? – man

+0

是的。你可能需要清理〜/ .sbt/boot或〜/ .ivy2 /。不知道系统中发生了什么。 – jsuereth

+0

仍然无法正常工作......我删除了〜/ .sbt,〜/ .ivy2,并使sbt变得干净和干净。你使用和我一样的代码吗? (只是推到https://github.com/fdietze/spring-data-neo4j-aspects-sbt-example/tree/sbt132)。从我的理解来看,它并没有工作得更早,因为ajc无法编译Scala本身,而spring-data-neo4j不能编织只有类文件。那么会发生什么变化? – man