让eclipse使用maven来编译/编织我的代码

时间:2011-08-25 02:06:46

标签: eclipse spring tomcat aspectj compile-time-weaving

我使用编译时编织与aspectj编织Spring的事务代码,所以我可以使用@Transactional。当我从Eclipse内部运行maven编译(使用aspectj-maven-plugin)时,eclipse会同步到tomcat服务器,一切顺利。

但是当Eclipse编译(project->自动构建)时,似乎没有编织spring事务代码,我得到了这个错误:

javax.persistence.TransactionRequiredException: no transaction is in progress

这非常烦人,因为我只是想编码而不是每次eclipse编译后都不会手动调用maven编译。

我是否需要编辑AJDT插件的Aspect Path或inPath?为什么Eclipse只使用maven来构建?


我正在使用:

  • Eclipse WTP Indigo
  • Spring 3.0.5。发布
  • JDK7& Tomcat 7
  • m2eclipse& AJDT插件

这些是我的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>

2 个答案:

答案 0 :(得分:3)

我正在处理与我正在进行的项目相同的问题。简而言之:对于您正在使用的工具集,您需要启用加载时编织或使用Eclipse的早期版本。目前,m2e Eclipse插件和aspectj-maven-plugin与最新版本的Eclipse集成存在问题。最糟糕的是m2e的人并不真正关心,因为他们不使用AspectJ。

以下是该问题的一些链接:

答案 1 :(得分:0)

除自动编译外,您还应检查是否已启用JDT编织插件。

窗口|喜好;单击JDT Weaving部分 - 验证它当前是否已启用。当您第一次安装插件时,它会询问您是否要启用此插件,但如果您回答“否”,则可以将其关闭。Make sure this screen says JDT Weaving is enabled