首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aspect Maven插件‘覆盖’已经增强的Datanucleus类

Aspect Maven插件‘覆盖’已经增强的Datanucleus类
EN

Stack Overflow用户
提问于 2013-04-04 15:38:41
回答 1查看 200关注 0票数 0

我使用了aspectj-maven-plugin和由appengine-maven-plugin完成的datanucleus增强。如果我在appengine-maven-plugin之前定义了aspectj-maven-plugin,一切似乎都没问题,但是当我在aspectj-maven-plugin之前定义appengine-maven-plugin时,aspectj-maven-plugin似乎覆盖了appengine-maven-plugin所做的类增强。

当然,我只能在appengine-maven-plugin之前定义aspectj-maven-plugin,但是我想知道是否有更好的更复杂的方法来解决这个问题?

这是我的配置:

代码语言:javascript
复制
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.4</version>
    <configuration>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <outxml>true</outxml>
        <source>${java.version}</source>
        <target>${java.version}</target>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${org.aspectj.version}</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-maven-plugin</artifactId>
    <version>${com.google.appengine.version}</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>enhance</goal>
            </goals>
        </execution>
    </executions>
</plugin>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-06 03:04:37

您将需要使用覆盖以使其正常工作。通常,AspectJ假定它是在类文件上运行的唯一字节码转换器。因此,在编织之前,它总是会返回到原始文件(不是转换后的类文件)。当你有像datanucleus这样的东西在发挥作用时,这个假设就不再成立。覆盖编织是在已经编织的类上编织的一个选项。

更多详细信息请访问:http://andrewclement.blogspot.ca/2010/05/aspectj-overweaving.html

要启用它,请使用-Xset:overWeaving=true选项来启用它。然而,看看博文下面的评论,我可以看到maven不喜欢-Xset:选项。因此,建议使用.lst文件,并在其中添加-X选项。

如果这不起作用,我建议通过电子邮件发送给aspectj用户的邮件列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15805193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档