我使用编译时与aspectj编织在Spring的事务代码中,这样我就可以使用@Transactional了。当我从Eclipse内部运行maven编译时(它使用了aspectj plugin),eclipse将同步到tomcat服务器,一切都进行得很顺利。
但是,当Eclipse编译(project->build自动)时,它似乎没有编织春季事务代码,我得到了以下错误:
javax.persistence.TransactionRequiredException: no transaction is in progress这非常烦人,因为每次eclipse编译之后,我只想编写代码,而不是手动调用maven编译。
我需要编辑AJDT插件的方面路径或inPath吗?为什么Eclipse不直接使用maven来构建呢?
我正在使用:
以下是我的pom.xml的相关片段:
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<!-- Compile time weaving -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<configuration>
<source>1.6</source>
<target>1.6</target>
<verbose>true</verbose>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- omitted test-compile part -->
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
</dependencies>
</plugin>发布于 2011-08-25 02:59:35
我正在处理一个我正在做的项目的同样的问题。简而言之:对于您正在使用的工具集,您需要启用加载时编织或使用Eclipse的早期版本。现在,m2e插件和aspectj插件与最近版本的Eclipse插件集成存在一个问题。最糟糕的是,m2e的人并不在乎,因为他们不使用AspectJ。
以下是有关此问题的一些链接:
发布于 2011-08-25 02:23:12
除了自动编译之外,您还应该检查JDT编织插件是否已启用。
窗口/首选项;单击JDT编织部分-验证它当前已启用。当您第一次安装插件时,它询问您是否希望启用该插件,但如果您回答“否”,则可以关闭该插件。

https://stackoverflow.com/questions/7184364
复制相似问题