我已经通过AJDT插件在Eclipse中成功编织,并通过gradle-aspectj插件在我的gradle构建中设置(花了很长时间......)。
在Eclipse中,这适用于生产和测试代码,即所有测试都通过。 当我运行gradle构建时,生成的应用程序也可以正常工作,我可以看到方面按预期工作。
gradle" test"然而,任务失败,任务失败。我可以将大多数故障追溯到某些方面(这里:对于spring事务)不起作用或者某些ajc-compiler选项使编码不活动(有关详细信息,请参阅here)。从Eclipse触发时,相同的测试运行正常。
是否还需要一些额外的配置才能使编织工作以进行测试?
我发现了一些相关的question,但这并没有为我解决问题。它看起来仍然没有拾取任何方面,也没有激活编译器选项(我只看到测试中的编码错误)。
我的(缩写)build.gradle(注意:我很难完全编织工作,所以这可能包含一些不必要的配置):
buildscript
{
dependencies
{
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE")
classpath("nl.eveoh:gradle-aspectj:1.6")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'aspectj'
configurations {
runtime
testCompile {
extendsFrom testAspectpath
}
aspectpath
testAspectpath
ajInpath
compile {
extendsFrom aspectpath
}
}
dependencies
{
// Non aspect dependencies
// ...
// Dependencies that require weaving - works for compile but not for test task
aspectpath("org.springframework:spring-context:4.2.1.RELEASE")
compile("org.springframework:spring-context:4.2.1.RELEASE")
aspectpath("org.springframework:spring-context-support:4.2.1.RELEASE")
compile("org.springframework:spring-context-support:4.2.1.RELEASE")
compile 'com.vaadin:vaadin-spring-boot-starter:1.0.0'
testCompile("org.springframework.boot:spring-boot-starter-test:${springVersion}")
// Spring Data Neo4j
compile "org.springframework.data:spring-data-neo4j:${springDataGraphVersion}"
// Additional aspects - also need to be configured in ADJT
aspectpath "org.aspectj:aspectjtools:${aspectjVersion}"
compile "org.aspectj:aspectjrt:${aspectjVersion}"
testCompile "org.aspectj:aspectjrt:${aspectjVersion}"
compile "org.springframework:spring-aspects:4.2.1.RELEASE"
aspectpath "org.springframework:spring-aspects:4.2.1.RELEASE"
compile "org.springframework:spring-instrument:3.2.1.RELEASE"
aspectpath "org.springframework:spring-instrument:3.2.1.RELEASE"
compile "org.springframework.data:spring-data-neo4j-aspects:${springDataGraphVersion}"
aspectpath "org.springframework.data:spring-data-neo4j-aspects:${springDataGraphVersion}"
// Required by spring aspects
compile "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final"
aspectpath "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final"
compile "javax.persistence:persistence-api:1.0"
aspectpath "javax.persistence:persistence-api:1.0"
testAspectpath sourceSets.main.output // from related question [4]
}
compileAspect {
// Works in compile but not in test task!
additionalAjcArgs = ['encoding' : 'UTF-8']
}
编辑:使用kriegaex的片段解决了编码问题。 从gradle运行时测试中不存在的方面的问题仍然存在。 大多数测试因
而失败org.neo4j.graphdb.NotInTransactionException
表示基于方法的注释
@Transactional
无效。 有什么想法吗?
答案 0 :(得分:2)
我没有尝试,但根据plugin description我认为你应该将它添加到你的Gradle配置文件中:
compileTestAspect {
additionalAjcArgs = ['encoding' : 'UTF-8']
}